diff --git a/application/config/autoload.php b/application/config/autoload.php
index 53129c9..1c492a2 100644
--- a/application/config/autoload.php
+++ b/application/config/autoload.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------
 | AUTO-LOADER
@@ -8,7 +8,7 @@
 | In order to keep the framework as light-weight as possible only the
 | absolute minimal resources are loaded by default. For example,
 | the database is not connected to automatically since no assumption
-| is made regarding whether you intend to use it.  This file lets
+| is made regarding whether you intend to use it. This file lets
 | you globally define which systems you would like loaded with every
 | request.
 |
@@ -29,11 +29,11 @@
 
 /*
 | -------------------------------------------------------------------
-|  Auto-load Packges
+| Auto-load Packges
 | -------------------------------------------------------------------
 | Prototype:
 |
-|  $autoload['packages'] = array(APPPATH.'third_party', '/usr/local/shared');
+| $autoload['packages'] = array(APPPATH.'third_party', '/usr/local/shared');
 |
 */
 
@@ -42,7 +42,7 @@
 
 /*
 | -------------------------------------------------------------------
-|  Auto-load Libraries
+| Auto-load Libraries
 | -------------------------------------------------------------------
 | These are the classes located in the system/libraries folder
 | or in your application/libraries folder.
@@ -57,7 +57,7 @@
 
 /*
 | -------------------------------------------------------------------
-|  Auto-load Helper Files
+| Auto-load Helper Files
 | -------------------------------------------------------------------
 | Prototype:
 |
@@ -69,14 +69,14 @@
 
 /*
 | -------------------------------------------------------------------
-|  Auto-load Config files
+| Auto-load Config files
 | -------------------------------------------------------------------
 | Prototype:
 |
 |	$autoload['config'] = array('config1', 'config2');
 |
 | NOTE: This item is intended for use ONLY if you have created custom
-| config files.  Otherwise, leave it blank.
+| config files. Otherwise, leave it blank.
 |
 */
 
@@ -85,13 +85,13 @@
 
 /*
 | -------------------------------------------------------------------
-|  Auto-load Language files
+| Auto-load Language files
 | -------------------------------------------------------------------
 | Prototype:
 |
 |	$autoload['language'] = array('lang1', 'lang2');
 |
-| NOTE: Do not include the "_lang" part of your file.  For example
+| NOTE: Do not include the "_lang" part of your file. For example
 | "codeigniter_lang.php" would be referenced as array('codeigniter');
 |
 */
@@ -101,7 +101,7 @@
 
 /*
 | -------------------------------------------------------------------
-|  Auto-load Models
+| Auto-load Models
 | -------------------------------------------------------------------
 | Prototype:
 |
diff --git a/application/config/config.php b/application/config/config.php
index 1ec6543..bcda884 100644
--- a/application/config/config.php
+++ b/application/config/config.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 /*
 |--------------------------------------------------------------------------
@@ -34,7 +34,7 @@
 |--------------------------------------------------------------------------
 |
 | This item determines which server global should be used to retrieve the
-| URI string.  The default setting of 'AUTO' works for most servers.
+| URI string. The default setting of 'AUTO' works for most servers.
 | If your links do not seem to work, try one of the other delicious flavors:
 |
 | 'AUTO'			Default - auto detects
@@ -88,7 +88,7 @@
 |--------------------------------------------------------------------------
 |
 | If you would like to use the 'hooks' feature you must enable it by
-| setting this variable to TRUE (boolean).  See the user guide for details.
+| setting this variable to TRUE (boolean). See the user guide for details.
 |
 */
 $config['enable_hooks'] = FALSE;
@@ -100,7 +100,7 @@
 |--------------------------------------------------------------------------
 |
 | This item allows you to set the filename/classname prefix when extending
-| native libraries.  For more information please see the user guide:
+| native libraries. For more information please see the user guide:
 |
 | http://codeigniter.com/user_guide/general/core_classes.html
 | http://codeigniter.com/user_guide/general/creating_libraries.html
@@ -115,11 +115,11 @@
 |--------------------------------------------------------------------------
 |
 | This lets you specify with a regular expression which characters are permitted
-| within your URLs.  When someone tries to submit a URL with disallowed
+| within your URLs. When someone tries to submit a URL with disallowed
 | characters they will get a warning message.
 |
 | As a security measure you are STRONGLY encouraged to restrict URLs to
-| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
+| as few characters as possible. By default only these are allowed: a-z 0-9~%.:_-
 |
 | Leave blank to allow all characters -- but only if you are insane.
 |
@@ -137,7 +137,7 @@
 | By default CodeIgniter uses search-engine friendly segment based URLs:
 | example.com/who/what/where/
 |
-| By default CodeIgniter enables access to the $_GET array.  If for some
+| By default CodeIgniter enables access to the $_GET array. If for some
 | reason you would like to disable it, set 'allow_get_array' to FALSE.
 |
 | You can optionally enable standard query string based URLs:
@@ -210,7 +210,7 @@
 |--------------------------------------------------------------------------
 |
 | Leave this BLANK unless you would like to set something other than the default
-| system/cache/ folder.  Use a full server path with trailing slash.
+| system/cache/ folder. Use a full server path with trailing slash.
 |
 */
 $config['cache_path'] = '';
@@ -221,7 +221,7 @@
 |--------------------------------------------------------------------------
 |
 | If you use the Encryption class or the Session class you
-| MUST set an encryption key.  See the user guide for info.
+| MUST set an encryption key. See the user guide for info.
 |
 */
 $config['encryption_key'] = '';
@@ -233,9 +233,9 @@
 |
 | 'sess_cookie_name'		= the name you want for the cookie
 | 'sess_expiration'			= the number of SECONDS you want the session to last.
-|   by default sessions last 7200 seconds (two hours).  Set to zero for no expiration.
+|  by default sessions last 7200 seconds (two hours). Set to zero for no expiration.
 | 'sess_expire_on_close'	= Whether to cause the session to expire automatically
-|   when the browser window is closed
+|  when the browser window is closed
 | 'sess_encrypt_cookie'		= Whether to encrypt the cookie
 | 'sess_use_database'		= Whether to save the session data to a database
 | 'sess_table_name'			= The name of the session database table
@@ -261,8 +261,8 @@
 |
 | 'cookie_prefix' = Set a prefix if you need to avoid collisions
 | 'cookie_domain' = Set to .your-domain.com for site-wide cookies
-| 'cookie_path'   =  Typically will be a forward slash
-| 'cookie_secure' =  Cookies will only be set if a secure HTTPS connection exists.
+| 'cookie_path'  = Typically will be a forward slash
+| 'cookie_secure' = Cookies will only be set if a secure HTTPS connection exists.
 |
 */
 $config['cookie_prefix']	= "";
@@ -303,16 +303,16 @@
 | Output Compression
 |--------------------------------------------------------------------------
 |
-| Enables Gzip output compression for faster page loads.  When enabled,
+| Enables Gzip output compression for faster page loads. When enabled,
 | the output class will test whether your server supports Gzip.
 | Even if it does, however, not all browsers support compression
 | so enable only if you are reasonably sure your visitors can handle it.
 |
-| VERY IMPORTANT:  If you are getting a blank page when compression is enabled it
+| VERY IMPORTANT: If you are getting a blank page when compression is enabled it
 | means you are prematurely outputting something to your browser. It could
-| even be a line of whitespace at the end of one of your scripts.  For
+| even be a line of whitespace at the end of one of your scripts. For
 | compression to work, nothing can be sent before the output buffer is called
-| by the output class.  Do not 'echo' any values with compression enabled.
+| by the output class. Do not 'echo' any values with compression enabled.
 |
 */
 $config['compress_output'] = FALSE;
@@ -322,9 +322,9 @@
 | Master Time Reference
 |--------------------------------------------------------------------------
 |
-| Options are 'local' or 'gmt'.  This pref tells the system whether to use
+| Options are 'local' or 'gmt'. This pref tells the system whether to use
 | your server's local time as the master 'now' reference, or convert it to
-| GMT.  See the 'date helper' page of the user guide for information
+| GMT. See the 'date helper' page of the user guide for information
 | regarding date handling.
 |
 */
@@ -338,7 +338,7 @@
 |
 | If your PHP installation does not have short tag support enabled CI
 | can rewrite the tags on-the-fly, enabling you to utilize that syntax
-| in your view files.  Options are TRUE or FALSE (boolean)
+| in your view files. Options are TRUE or FALSE (boolean)
 |
 */
 $config['rewrite_short_tags'] = FALSE;
diff --git a/application/config/constants.php b/application/config/constants.php
index 4a879d3..edaefe8 100644
--- a/application/config/constants.php
+++ b/application/config/constants.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 /*
 |--------------------------------------------------------------------------
@@ -6,10 +6,10 @@
 |--------------------------------------------------------------------------
 |
 | These prefs are used when checking and setting modes when working
-| with the file system.  The defaults are fine on servers with proper
+| with the file system. The defaults are fine on servers with proper
 | security, but you may wish (or even need) to change the values in
 | certain environments (Apache running a separate process for each
-| user, PHP under CGI with Apache suEXEC, etc.).  Octal values should
+| user, PHP under CGI with Apache suEXEC, etc.). Octal values should
 | always be used to set the mode correctly.
 |
 */
diff --git a/application/config/database.php b/application/config/database.php
index fa541a7..e77bf97 100644
--- a/application/config/database.php
+++ b/application/config/database.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------
 | DATABASE CONNECTIVITY SETTINGS
@@ -16,10 +16,10 @@
 |	['username'] The username used to connect to the database
 |	['password'] The password used to connect to the database
 |	['database'] The name of the database you want to connect to
-|	['dbdriver'] The database type. ie: mysql.  Currently supported:
-				 mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
+|	['dbdriver'] The database type. ie: mysql. Currently supported:
+|				 mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
 |	['dbprefix'] You can add an optional prefix, which will be added
-|				 to the table name when using the  Active Record class
+|				 to the table name when using the Active Record class
 |	['pconnect'] TRUE/FALSE - Whether to use a persistent connection
 |	['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
 |	['cache_on'] TRUE/FALSE - Enables/disables query caching
@@ -38,7 +38,7 @@
 |							- good for ensuring strict SQL while developing
 |
 | The $active_group variable lets you choose which connection group to
-| make active.  By default there is only one group (the 'default' group).
+| make active. By default there is only one group (the 'default' group).
 |
 | The $active_record variables lets you determine whether or not to load
 | the active record class
diff --git a/application/config/foreign_chars.php b/application/config/foreign_chars.php
index 14b0d73..111fe58 100644
--- a/application/config/foreign_chars.php
+++ b/application/config/foreign_chars.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------
 | Foreign Characters
diff --git a/application/config/hooks.php b/application/config/hooks.php
index a4ad2be..4b26665 100644
--- a/application/config/hooks.php
+++ b/application/config/hooks.php
@@ -1,10 +1,10 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------------
 | Hooks
 | -------------------------------------------------------------------------
 | This file lets you define "hooks" to extend CI without hacking the core
-| files.  Please see the user guide for info:
+| files. Please see the user guide for info:
 |
 |	http://codeigniter.com/user_guide/general/hooks.html
 |
diff --git a/application/config/mimes.php b/application/config/mimes.php
index 8065794..e573ed0 100644
--- a/application/config/mimes.php
+++ b/application/config/mimes.php
@@ -1,9 +1,9 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------
 | MIME TYPES
 | -------------------------------------------------------------------
-| This file contains an array of mime types.  It is used by the
+| This file contains an array of mime types. It is used by the
 | Upload class to help identify allowed file types.
 |
 */
@@ -51,7 +51,7 @@
 				'tgz'	=>	array('application/x-tar', 'application/x-gzip-compressed'),
 				'xhtml'	=>	'application/xhtml+xml',
 				'xht'	=>	'application/xhtml+xml',
-				'zip'	=>  array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
+				'zip'	=> array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
 				'mid'	=>	'audio/midi',
 				'midi'	=>	'audio/midi',
 				'mpga'	=>	'audio/mpeg',
@@ -71,7 +71,7 @@
 				'jpeg'	=>	array('image/jpeg', 'image/pjpeg'),
 				'jpg'	=>	array('image/jpeg', 'image/pjpeg'),
 				'jpe'	=>	array('image/jpeg', 'image/pjpeg'),
-				'png'	=>	array('image/png',  'image/x-png'),
+				'png'	=>	array('image/png', 'image/x-png'),
 				'tiff'	=>	'image/tiff',
 				'tif'	=>	'image/tiff',
 				'css'	=>	'text/css',
diff --git a/application/config/profiler.php b/application/config/profiler.php
index f8a5b1a..b0f43b1 100644
--- a/application/config/profiler.php
+++ b/application/config/profiler.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------------
 | Profiler Sections
diff --git a/application/config/routes.php b/application/config/routes.php
index 5f9a583..480645c 100644
--- a/application/config/routes.php
+++ b/application/config/routes.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------------
 | URI ROUTING
diff --git a/application/config/smileys.php b/application/config/smileys.php
index 25d28b2..5b2964e 100644
--- a/application/config/smileys.php
+++ b/application/config/smileys.php
@@ -1,10 +1,10 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------
 | SMILEYS
 | -------------------------------------------------------------------
 | This file contains an array of smileys for use with the emoticon helper.
-| Individual images can be used to replace multiple simileys.  For example:
+| Individual images can be used to replace multiple simileys. For example:
 | :-) and :) use the same image replacement.
 |
 | Please see user guide for more info:
diff --git a/application/config/user_agents.php b/application/config/user_agents.php
index e2d3c3a..3c018a3 100644
--- a/application/config/user_agents.php
+++ b/application/config/user_agents.php
@@ -1,11 +1,11 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /*
 | -------------------------------------------------------------------
 | USER AGENT TYPES
 | -------------------------------------------------------------------
-| This file contains four arrays of user agent data.  It is used by the
+| This file contains four arrays of user agent data. It is used by the
 | User Agent Class to help identify browser, platform, robot, and
-| mobile device data.  The array keys are used to identify the device
+| mobile device data. The array keys are used to identify the device
 | and the array values are used to set the actual name of the item.
 |
 */
diff --git a/application/controllers/welcome.php b/application/controllers/welcome.php
index 21bef43..65d55bf 100644
--- a/application/controllers/welcome.php
+++ b/application/controllers/welcome.php
@@ -7,10 +7,10 @@
 	 *
 	 * Maps to the following URL
 	 * 		http://example.com/index.php/welcome
-	 *	- or -  
+	 *	- or -
 	 * 		http://example.com/index.php/welcome/index
 	 *	- or -
-	 * Since this controller is set as the default controller in 
+	 * Since this controller is set as the default controller in
 	 * config/routes.php, it's displayed at http://example.com/
 	 *
 	 * So any other public methods not prefixed with an underscore will
diff --git a/application/errors/error_php.php b/application/errors/error_php.php
index f085c20..5f0c07b 100644
--- a/application/errors/error_php.php
+++ b/application/errors/error_php.php
@@ -3,7 +3,7 @@
 <h4>A PHP Error was encountered</h4>
 
 <p>Severity: <?php echo $severity; ?></p>
-<p>Message:  <?php echo $message; ?></p>
+<p>Message: <?php echo $message; ?></p>
 <p>Filename: <?php echo $filepath; ?></p>
 <p>Line Number: <?php echo $line; ?></p>
 
diff --git a/index.php b/index.php
index f4ac11a..e56de13 100644
--- a/index.php
+++ b/index.php
@@ -11,9 +11,9 @@
  *
  * This can be set to anything, but default usage is:
  *
- *     development
- *     testing
- *     production
+ *   development
+ *   testing
+ *   production
  *
  * NOTE: If you change these, also change the error_reporting() code below
  *
@@ -35,7 +35,7 @@
 		case 'development':
 			error_reporting(E_ALL);
 		break;
-	
+
 		case 'testing':
 		case 'production':
 			error_reporting(0);
@@ -52,7 +52,7 @@
  *---------------------------------------------------------------
  *
  * This variable must contain the name of your "system" folder.
- * Include the path if the folder is not in the same  directory
+ * Include the path if the folder is not in the same directory
  * as this file.
  *
  */
@@ -65,7 +65,7 @@
  *
  * If you want this front controller to use a different "application"
  * folder then the default one you can set its name here. The folder
- * can also be renamed or relocated anywhere on your server.  If
+ * can also be renamed or relocated anywhere on your server. If
  * you do, use a full server path. For more info please see the user guide:
  * http://codeigniter.com/user_guide/general/managing_apps.html
  *
@@ -81,24 +81,24 @@
  *
  * Normally you will set your default controller in the routes.php file.
  * You can, however, force a custom routing by hard-coding a
- * specific controller class/function here.  For most applications, you
+ * specific controller class/function here. For most applications, you
  * WILL NOT set your routing here, but it's an option for those
  * special instances where you might want to override the standard
  * routing in a specific front controller that shares a common CI installation.
  *
- * IMPORTANT:  If you set the routing here, NO OTHER controller will be
+ * IMPORTANT: If you set the routing here, NO OTHER controller will be
  * callable. In essence, this preference limits your application to ONE
- * specific controller.  Leave the function name blank if you need
+ * specific controller. Leave the function name blank if you need
  * to call functions dynamically via the URI.
  *
  * Un-comment the $routing array below to use this feature
  *
  */
-	// The directory name, relative to the "controllers" folder.  Leave blank
+	// The directory name, relative to the "controllers" folder. Leave blank
 	// if your controller is not in a sub-folder within the "controllers" folder
 	// $routing['directory'] = '';
 
-	// The controller class file name.  Example:  Mycontroller
+	// The controller class file name. Example: Mycontroller
 	// $routing['controller'] = '';
 
 	// The controller function you wish to be called.
@@ -107,7 +107,7 @@
 
 /*
  * -------------------------------------------------------------------
- *  CUSTOM CONFIG VALUES
+ * CUSTOM CONFIG VALUES
  * -------------------------------------------------------------------
  *
  * The $assign_to_config array below will be passed dynamically to the
@@ -125,12 +125,12 @@
 
 
 // --------------------------------------------------------------------
-// END OF USER CONFIGURABLE SETTINGS.  DO NOT EDIT BELOW THIS LINE
+// END OF USER CONFIGURABLE SETTINGS. DO NOT EDIT BELOW THIS LINE
 // --------------------------------------------------------------------
 
 /*
  * ---------------------------------------------------------------
- *  Resolve the system path for increased reliability
+ * Resolve the system path for increased reliability
  * ---------------------------------------------------------------
  */
 
@@ -156,7 +156,7 @@
 
 /*
  * -------------------------------------------------------------------
- *  Now that we know the path, set the main path constants
+ * Now that we know the path, set the main path constants
  * -------------------------------------------------------------------
  */
 	// The name of THIS file
diff --git a/license.txt b/license.txt
index 061cdb9..4809e8c 100644
--- a/license.txt
+++ b/license.txt
@@ -2,7 +2,7 @@
 All rights reserved.
 
 This license is a legal agreement between you and EllisLab Inc. for the use
-of CodeIgniter Software (the "Software").  By obtaining the Software you
+of CodeIgniter Software (the "Software"). By obtaining the Software you
 agree to comply with the terms and conditions of this license.
 
 PERMITTED USE
@@ -48,4 +48,4 @@
 WITH THE SOFTWARE. LICENSE HOLDERS ARE SOLELY RESPONSIBLE FOR DETERMINING THE
 APPROPRIATENESS OF USE AND ASSUME ALL RISKS ASSOCIATED WITH ITS USE, INCLUDING
 BUT NOT LIMITED TO THE RISKS OF PROGRAM ERRORS, DAMAGE TO EQUIPMENT, LOSS OF
-DATA OR SOFTWARE PROGRAMS, OR UNAVAILABILITY OR INTERRUPTION OF OPERATIONS.
+DATA OR SOFTWARE PROGRAMS, OR UNAVAILABILITY OR INTERRUPTION OF OPERATIONS.
\ No newline at end of file
diff --git a/system/core/Benchmark.php b/system/core/Benchmark.php
index 515550e..3686c2d 100644
--- a/system/core/Benchmark.php
+++ b/system/core/Benchmark.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -19,7 +19,7 @@
  * CodeIgniter Benchmark Class
  *
  * This class enables you to mark points and calculate the time difference
- * between them.  Memory consumption can also be displayed.
+ * between them. Memory consumption can also be displayed.
  *
  * @package		CodeIgniter
  * @subpackage	Libraries
diff --git a/system/core/CodeIgniter.php b/system/core/CodeIgniter.php
index 03b25ab..b6f5e87 100644
--- a/system/core/CodeIgniter.php
+++ b/system/core/CodeIgniter.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -29,28 +29,28 @@
 
 /*
  * ------------------------------------------------------
- *  Define the CodeIgniter Version
+ * Define the CodeIgniter Version
  * ------------------------------------------------------
  */
 	define('CI_VERSION', '2.0.2');
 
 /*
  * ------------------------------------------------------
- *  Define the CodeIgniter Branch (Core = TRUE, Reactor = FALSE)
+ * Define the CodeIgniter Branch (Core = TRUE, Reactor = FALSE)
  * ------------------------------------------------------
  */
 	define('CI_CORE', FALSE);
 
 /*
  * ------------------------------------------------------
- *  Load the global functions
+ * Load the global functions
  * ------------------------------------------------------
  */
 	require(BASEPATH.'core/Common.php');
 
 /*
  * ------------------------------------------------------
- *  Load the framework constants
+ * Load the framework constants
  * ------------------------------------------------------
  */
 	if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/constants.php'))
@@ -64,7 +64,7 @@
 
 /*
  * ------------------------------------------------------
- *  Define a custom error handler so we can log PHP errors
+ * Define a custom error handler so we can log PHP errors
  * ------------------------------------------------------
  */
 	set_error_handler('_exception_handler');
@@ -76,7 +76,7 @@
 
 /*
  * ------------------------------------------------------
- *  Set the subclass_prefix
+ * Set the subclass_prefix
  * ------------------------------------------------------
  *
  * Normally the "subclass_prefix" is set in the config file.
@@ -85,7 +85,7 @@
  * "libraries" folder. Since CI allows config items to be
  * overriden via data set in the main index. php file,
  * before proceeding we need to know if a subclass_prefix
- * override exists.  If so, we will set this value now,
+ * override exists. If so, we will set this value now,
  * before any classes are loaded
  * Note: Since the config file data is cached it doesn't
  * hurt to load it here.
@@ -97,7 +97,7 @@
 
 /*
  * ------------------------------------------------------
- *  Set a liberal script execution time limit
+ * Set a liberal script execution time limit
  * ------------------------------------------------------
  */
 	if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
@@ -107,7 +107,7 @@
 
 /*
  * ------------------------------------------------------
- *  Start the timer... tick tock tick tock...
+ * Start the timer... tick tock tick tock...
  * ------------------------------------------------------
  */
 	$BM =& load_class('Benchmark', 'core');
@@ -116,21 +116,21 @@
 
 /*
  * ------------------------------------------------------
- *  Instantiate the hooks class
+ * Instantiate the hooks class
  * ------------------------------------------------------
  */
 	$EXT =& load_class('Hooks', 'core');
 
 /*
  * ------------------------------------------------------
- *  Is there a "pre_system" hook?
+ * Is there a "pre_system" hook?
  * ------------------------------------------------------
  */
 	$EXT->_call_hook('pre_system');
 
 /*
  * ------------------------------------------------------
- *  Instantiate the config class
+ * Instantiate the config class
  * ------------------------------------------------------
  */
 	$CFG =& load_class('Config', 'core');
@@ -143,7 +143,7 @@
 
 /*
  * ------------------------------------------------------
- *  Instantiate the UTF-8 class
+ * Instantiate the UTF-8 class
  * ------------------------------------------------------
  *
  * Note: Order here is rather important as the UTF-8
@@ -157,14 +157,14 @@
 
 /*
  * ------------------------------------------------------
- *  Instantiate the URI class
+ * Instantiate the URI class
  * ------------------------------------------------------
  */
 	$URI =& load_class('URI', 'core');
 
 /*
  * ------------------------------------------------------
- *  Instantiate the routing class and set the routing
+ * Instantiate the routing class and set the routing
  * ------------------------------------------------------
  */
 	$RTR =& load_class('Router', 'core');
@@ -178,14 +178,14 @@
 
 /*
  * ------------------------------------------------------
- *  Instantiate the output class
+ * Instantiate the output class
  * ------------------------------------------------------
  */
 	$OUT =& load_class('Output', 'core');
 
 /*
  * ------------------------------------------------------
- *	Is there a valid cache file?  If so, we're done...
+ *	Is there a valid cache file? If so, we're done...
  * ------------------------------------------------------
  */
 	if ($EXT->_call_hook('cache_override') === FALSE)
@@ -205,21 +205,21 @@
 
 /*
  * ------------------------------------------------------
- *  Load the Input class and sanitize globals
+ * Load the Input class and sanitize globals
  * ------------------------------------------------------
  */
 	$IN	=& load_class('Input', 'core');
 
 /*
  * ------------------------------------------------------
- *  Load the Language class
+ * Load the Language class
  * ------------------------------------------------------
  */
 	$LANG =& load_class('Lang', 'core');
 
 /*
  * ------------------------------------------------------
- *  Load the app controller and local controller
+ * Load the app controller and local controller
  * ------------------------------------------------------
  *
  */
@@ -252,14 +252,14 @@
 
 /*
  * ------------------------------------------------------
- *  Security check
+ * Security check
  * ------------------------------------------------------
  *
- *  None of the functions in the app controller or the
- *  loader class can be called via the URI, nor can
- *  controller functions that begin with an underscore
+ * None of the functions in the app controller or the
+ * loader class can be called via the URI, nor can
+ * controller functions that begin with an underscore
  */
-	$class  = $RTR->fetch_class();
+	$class = $RTR->fetch_class();
 	$method = $RTR->fetch_method();
 
 	if ( ! class_exists($class)
@@ -272,14 +272,14 @@
 
 /*
  * ------------------------------------------------------
- *  Is there a "pre_controller" hook?
+ * Is there a "pre_controller" hook?
  * ------------------------------------------------------
  */
 	$EXT->_call_hook('pre_controller');
 
 /*
  * ------------------------------------------------------
- *  Instantiate the requested controller
+ * Instantiate the requested controller
  * ------------------------------------------------------
  */
 	// Mark a start point so we can benchmark the controller
@@ -289,14 +289,14 @@
 
 /*
  * ------------------------------------------------------
- *  Is there a "post_controller_constructor" hook?
+ * Is there a "post_controller_constructor" hook?
  * ------------------------------------------------------
  */
 	$EXT->_call_hook('post_controller_constructor');
 
 /*
  * ------------------------------------------------------
- *  Call the requested method
+ * Call the requested method
  * ------------------------------------------------------
  */
 	// Is there a "remap" function? If so, we call it instead
@@ -345,14 +345,14 @@
 
 /*
  * ------------------------------------------------------
- *  Is there a "post_controller" hook?
+ * Is there a "post_controller" hook?
  * ------------------------------------------------------
  */
 	$EXT->_call_hook('post_controller');
 
 /*
  * ------------------------------------------------------
- *  Send the final rendered output to the browser
+ * Send the final rendered output to the browser
  * ------------------------------------------------------
  */
 	if ($EXT->_call_hook('display_override') === FALSE)
@@ -362,14 +362,14 @@
 
 /*
  * ------------------------------------------------------
- *  Is there a "post_system" hook?
+ * Is there a "post_system" hook?
  * ------------------------------------------------------
  */
 	$EXT->_call_hook('post_system');
 
 /*
  * ------------------------------------------------------
- *  Close the DB connection if one exists
+ * Close the DB connection if one exists
  * ------------------------------------------------------
  */
 	if (class_exists('CI_DB') AND isset($CI->db))
diff --git a/system/core/Common.php b/system/core/Common.php
index d1e8e77..eb9e144 100644
--- a/system/core/Common.php
+++ b/system/core/Common.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -58,7 +58,7 @@
  * Tests for file writability
  *
  * is_writable() returns TRUE on Windows servers when you really can't write to
- * the file, based on the read-only attribute.  is_writable() is also unreliable
+ * the file, based on the read-only attribute. is_writable() is also unreliable
  * on Unix servers if safe_mode is on.
  *
  * @access	private
@@ -73,7 +73,7 @@
 		}
 
 		// For windows servers and safe_mode "on" installations we'll actually
-		// write a file then read it.  Bah...
+		// write a file then read it. Bah...
 		if (is_dir($file))
 		{
 			$file = rtrim($file, '/').'/'.md5(mt_rand(1,100).mt_rand(1,100));
@@ -102,8 +102,8 @@
 /**
 * Class registry
 *
-* This function acts as a singleton.  If the requested class does not
-* exist it is instantiated and set to a static variable.  If it has
+* This function acts as a singleton. If the requested class does not
+* exist it is instantiated and set to a static variable. If it has
 * previously been instantiated the variable is returned.
 *
 * @access	public
@@ -116,7 +116,7 @@
 	{
 		static $_classes = array();
 
-		// Does the class exist?  If so, we're done...
+		// Does the class exist? If so, we're done...
 		if (isset($_classes[$class]))
 		{
 			return $_classes[$class];
@@ -141,7 +141,7 @@
 			}
 		}
 
-		// Is the request a class extension?  If so we load it too
+		// Is the request a class extension? If so we load it too
 		if (file_exists(APPPATH.$directory.'/'.config_item('subclass_prefix').$class.'.php'))
 		{
 			$name = config_item('subclass_prefix').$class;
@@ -170,7 +170,7 @@
 // --------------------------------------------------------------------
 
 /**
-* Keeps track of which libraries have been loaded.  This function is
+* Keeps track of which libraries have been loaded. This function is
 * called by the load_class() function above
 *
 * @access	public
@@ -399,7 +399,7 @@
 
 		if ($text == '')
 		{
-			show_error('No status text available.  Please check your status code number or supply your own message text.', 500);
+			show_error('No status text available. Please check your status code number or supply your own message text.', 500);
 		}
 
 		$server_protocol = (isset($_SERVER['SERVER_PROTOCOL'])) ? $_SERVER['SERVER_PROTOCOL'] : FALSE;
@@ -424,7 +424,7 @@
 * Exception Handler
 *
 * This is the custom exception handler that is declaired at the top
-* of Codeigniter.php.  The main reason we use this is to permit
+* of Codeigniter.php. The main reason we use this is to permit
 * PHP errors to be logged in our own log files since the user may
 * not have access to server logs. Since this function
 * effectively intercepts PHP errors, however, we also need
@@ -455,7 +455,7 @@
 			$_error->show_php_error($severity, $message, $filepath, $line);
 		}
 
-		// Should we log the error?  No?  We're done...
+		// Should we log the error? No? We're done...
 		if (config_item('log_threshold') == 0)
 		{
 			return;
@@ -479,16 +479,16 @@
 	function remove_invisible_characters($str, $url_encoded = TRUE)
 	{
 		$non_displayables = array();
-		
+
 		// every control character except newline (dec 10)
 		// carriage return (dec 13), and horizontal tab (dec 09)
-		
+
 		if ($url_encoded)
 		{
 			$non_displayables[] = '/%0[0-8bcef]/';	// url encoded 00-08, 11, 12, 14, 15
 			$non_displayables[] = '/%1[0-9a-f]/';	// url encoded 16-31
 		}
-		
+
 		$non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';	// 00-08, 11, 12, 14-31, 127
 
 		do
diff --git a/system/core/Config.php b/system/core/Config.php
index 1096a9e..fa71f4d 100644
--- a/system/core/Config.php
+++ b/system/core/Config.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -37,11 +37,11 @@
 	 *
 	 * Sets the $config data from the primary config.php file as a class variable
 	 *
-	 * @access   public
-	 * @param   string	the config file name
-	 * @param   boolean  if configuration values should be loaded into their own section
-	 * @param   boolean  true if errors should just return false, false if an error message should be displayed
-	 * @return  boolean  if the file was successfully loaded or not
+	 * @access  public
+	 * @param  string	the config file name
+	 * @param  boolean if configuration values should be loaded into their own section
+	 * @param  boolean true if errors should just return false, false if an error message should be displayed
+	 * @return boolean if the file was successfully loaded or not
 	 */
 	function __construct()
 	{
@@ -74,8 +74,8 @@
 	 *
 	 * @access	public
 	 * @param	string	the config file name
-	 * @param   boolean  if configuration values should be loaded into their own section
-	 * @param   boolean  true if errors should just return false, false if an error message should be displayed
+	 * @param  boolean if configuration values should be loaded into their own section
+	 * @param  boolean true if errors should just return false, false if an error message should be displayed
 	 * @return	boolean	if the file was loaded correctly
 	 */
 	function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
@@ -305,7 +305,7 @@
 	 * Assign to Config
 	 *
 	 * This function is called by the front controller (CodeIgniter.php)
-	 * after the Config class is instantiated.  It permits config items
+	 * after the Config class is instantiated. It permits config items
 	 * to be assigned or overriden by variables contained in the index.php file
 	 *
 	 * @access	private
diff --git a/system/core/Controller.php b/system/core/Controller.php
index ec86b79..107d3f3 100644
--- a/system/core/Controller.php
+++ b/system/core/Controller.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -37,7 +37,7 @@
 	public function __construct()
 	{
 		self::$instance =& $this;
-		
+
 		// Assign all the class objects that were instantiated by the
 		// bootstrap file (CodeIgniter.php) to local class variables
 		// so that CI can run as one big super object.
@@ -49,7 +49,7 @@
 		$this->load =& load_class('Loader', 'core');
 
 		$this->load->set_base_classes()->ci_autoloader();
-		
+
 		log_message('debug', "Controller Class Initialized");
 	}
 
diff --git a/system/core/Exceptions.php b/system/core/Exceptions.php
index bff86a9..2503c90 100644
--- a/system/core/Exceptions.php
+++ b/system/core/Exceptions.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -54,7 +54,7 @@
 	public function __construct()
 	{
 		$this->ob_level = ob_get_level();
-		// Note:  Do not log messages from this constructor.
+		// Note: Do not log messages from this constructor.
 	}
 
 	// --------------------------------------------------------------------
@@ -75,7 +75,7 @@
 	{
 		$severity = ( ! isset($this->levels[$severity])) ? $severity : $this->levels[$severity];
 
-		log_message('error', 'Severity: '.$severity.'  --> '.$message. ' '.$filepath.' '.$line, TRUE);
+		log_message('error', 'Severity: '.$severity.' --> '.$message. ' '.$filepath.' '.$line, TRUE);
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/core/Hooks.php b/system/core/Hooks.php
index fd6380f..ffb3258 100644
--- a/system/core/Hooks.php
+++ b/system/core/Hooks.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -67,7 +67,7 @@
 
 		if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/hooks.php'))
 		{
-		    include(APPPATH.'config/'.ENVIRONMENT.'/hooks.php');
+		  include(APPPATH.'config/'.ENVIRONMENT.'/hooks.php');
 		}
 		elseif (is_file(APPPATH.'config/hooks.php'))
 		{
diff --git a/system/core/Input.php b/system/core/Input.php
index dc7612e..89eda56 100644
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -36,7 +36,7 @@
 	var $_enable_csrf			= FALSE; // Set automatically based on config setting
 
 	protected $headers			= array();
-	
+
 
 	/**
 	 * Constructor
@@ -147,7 +147,7 @@
 			}
 			return $post;
 		}
-		
+
 		return $this->_fetch_from_array($_POST, $index, $xss_clean);
 	}
 
@@ -201,7 +201,7 @@
 	* @param	mixed
 	* @param	string	the value of the cookie
 	* @param	string	the number of seconds until expiration
-	* @param	string	the cookie domain.  Usually:  .yourdomain.com
+	* @param	string	the cookie domain. Usually: .yourdomain.com
 	* @param	string	the cookie path
 	* @param	string	the cookie prefix
 	* @param	bool	true makes the cookie secure
@@ -402,9 +402,9 @@
 	function _sanitize_globals()
 	{
 		// It would be "wrong" to unset any of these GLOBALS.
-		$protected = array('_SERVER', '_GET', '_POST', '_FILES', '_REQUEST', 
+		$protected = array('_SERVER', '_GET', '_POST', '_FILES', '_REQUEST',
 							'_SESSION', '_ENV', 'GLOBALS', 'HTTP_RAW_POST_DATA',
-							'system_folder', 'application_folder', 'BM', 'EXT', 
+							'system_folder', 'application_folder', 'BM', 'EXT',
 							'CFG', 'URI', 'RTR', 'OUT', 'IN');
 
 		// Unset globals for securiy.
@@ -523,7 +523,7 @@
 		{
 			$str = $this->uni->clean_string($str);
 		}
-		
+
 		// Remove control characters
 		$str = remove_invisible_characters($str);
 
@@ -579,7 +579,7 @@
 	/**
 	 * Request Headers
 	 *
-	 * In Apache, you can simply call apache_request_headers(), however for 
+	 * In Apache, you can simply call apache_request_headers(), however for
 	 * people running other webservers the function is undefined.
 	 *
 	 * @return array
@@ -609,10 +609,10 @@
 		{
 			$key = str_replace('_', ' ', strtolower($key));
 			$key = str_replace(' ', '-', ucwords($key));
-			
+
 			$this->headers[$key] = $val;
 		}
-		
+
 		return $this->headers;
 	}
 
@@ -633,7 +633,7 @@
 		{
 			$this->request_headers();
 		}
-		
+
 		if ( ! isset($this->headers[$index]))
 		{
 			return FALSE;
@@ -644,7 +644,7 @@
 			return $this->security->xss_clean($this->headers[$index]);
 		}
 
-		return $this->headers[$index];		
+		return $this->headers[$index];
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/core/Lang.php b/system/core/Lang.php
index 170e6c7..79eb443 100644
--- a/system/core/Lang.php
+++ b/system/core/Lang.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/core/Loader.php b/system/core/Loader.php
index 721c196..87f05d8 100644
--- a/system/core/Loader.php
+++ b/system/core/Loader.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -40,7 +40,7 @@
 	protected $_ci_loaded_files		= array();
 	protected $_ci_models			= array();
 	protected $_ci_helpers			= array();
-	protected $_ci_varmap			= array('unit_test' => 'unit', 
+	protected $_ci_varmap			= array('unit_test' => 'unit',
 											'user_agent' => 'agent');
 
 	/**
@@ -50,29 +50,29 @@
 	 */
 	public function __construct()
 	{
-		$this->_ci_ob_level  = ob_get_level();
+		$this->_ci_ob_level = ob_get_level();
 		$this->_ci_library_paths = array(APPPATH, BASEPATH);
 		$this->_ci_helper_paths = array(APPPATH, BASEPATH);
 		$this->_ci_model_paths = array(APPPATH);
 		$this->_ci_view_paths = array(APPPATH.'views/'	=> TRUE);
-		
+
 		log_message('debug', "Loader Class Initialized");
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Set _base_classes variable
 	 *
 	 * This method is called once in CI_Controller.
 	 *
-	 * @param 	array 	
+	 * @param 	array
 	 * @return 	object
 	 */
 	public function set_base_classes()
 	{
 		$this->_base_classes =& is_loaded();
-		
+
 		return $this;
 	}
 
@@ -96,7 +96,7 @@
 		{
 			return $this->_ci_classes[$class];
 		}
-				
+
 		return FALSE;
 	}
 
@@ -260,7 +260,7 @@
 			return DB($params, $active_record);
 		}
 
-		// Initialize the db variable.  Needed to prevent
+		// Initialize the db variable. Needed to prevent
 		// reference errors with some configurations
 		$CI->db = '';
 
@@ -323,11 +323,11 @@
 	/**
 	 * Load View
 	 *
-	 * This function is used to load a "view" file.  It has three parameters:
+	 * This function is used to load a "view" file. It has three parameters:
 	 *
 	 * 1. The name of the "view" file to be included.
 	 * 2. An associative array of data to be extracted for use in the view.
-	 * 3. TRUE/FALSE - whether to return the data or load it.  In
+	 * 3. TRUE/FALSE - whether to return the data or load it. In
 	 * some cases it's advantageous to be able to return data so that
 	 * a developer can process it in some way.
 	 *
@@ -538,13 +538,13 @@
 	 * Prepends a parent path to the library, model, helper, and config path arrays
 	 *
 	 * @param	string
-	 * @param 	boolean 	
+	 * @param 	boolean
 	 * @return	void
 	 */
 	public function add_package_path($path, $view_cascade=TRUE)
 	{
 		$path = rtrim($path, '/').'/';
-		
+
 		array_unshift($this->_ci_library_paths, $path);
 		array_unshift($this->_ci_model_paths, $path);
 		array_unshift($this->_ci_helper_paths, $path);
@@ -604,7 +604,7 @@
 					unset($this->{$var}[$key]);
 				}
 			}
-			
+
 			if (isset($this->_ci_view_paths[$path.'views/']))
 			{
 				unset($this->_ci_view_paths[$path.'views/']);
@@ -643,7 +643,7 @@
 		{
 			$$_ci_val = ( ! isset($_ci_data[$_ci_val])) ? FALSE : $_ci_data[$_ci_val];
 		}
-		
+
 		$file_exists = FALSE;
 
 		// Set the path to the requested file
@@ -665,11 +665,11 @@
 					$file_exists = TRUE;
 					break;
 				}
-				
+
 				if ( ! $cascade)
 				{
 					break;
-				}				
+				}
 			}
 		}
 
@@ -710,9 +710,9 @@
 		 * We buffer the output for two reasons:
 		 * 1. Speed. You get a significant speed boost.
 		 * 2. So that the final rendered template can be
-		 * post-processed by the output class.  Why do we
-		 * need post processing?  For one thing, in order to
-		 * show the elapsed page load time.  Unless we
+		 * post-processed by the output class. Why do we
+		 * need post processing? For one thing, in order to
+		 * show the elapsed page load time. Unless we
 		 * can intercept the content right before it's sent to
 		 * the browser and then stop the timer it won't be accurate.
 		 */
@@ -809,11 +809,11 @@
 					show_error("Unable to load the requested class: ".$class);
 				}
 
-				// Safety:  Was the class already loaded by a previous call?
+				// Safety: Was the class already loaded by a previous call?
 				if (in_array($subclass, $this->_ci_loaded_files))
 				{
 					// Before we deem this to be a duplicate request, let's see
-					// if a custom object name is being supplied.  If so, we'll
+					// if a custom object name is being supplied. If so, we'll
 					// return a new instance of the object
 					if ( ! is_null($object_name))
 					{
@@ -842,17 +842,17 @@
 			{
 				$filepath = $path.'libraries/'.$subdir.$class.'.php';
 
-				// Does the file exist?  No?  Bummer...
+				// Does the file exist? No? Bummer...
 				if ( ! file_exists($filepath))
 				{
 					continue;
 				}
 
-				// Safety:  Was the class already loaded by a previous call?
+				// Safety: Was the class already loaded by a previous call?
 				if (in_array($filepath, $this->_ci_loaded_files))
 				{
 					// Before we deem this to be a duplicate request, let's see
-					// if a custom object name is being supplied.  If so, we'll
+					// if a custom object name is being supplied. If so, we'll
 					// return a new instance of the object
 					if ( ! is_null($object_name))
 					{
@@ -875,7 +875,7 @@
 
 		} // END FOREACH
 
-		// One last attempt.  Maybe the library is in a subdirectory, but it wasn't specified?
+		// One last attempt. Maybe the library is in a subdirectory, but it wasn't specified?
 		if ($subdir == '')
 		{
 			$path = strtolower($class).'/'.$class;
@@ -903,7 +903,7 @@
 	 */
 	protected function _ci_init_class($class, $prefix = '', $config = FALSE, $object_name = NULL)
 	{
-		// Is there an associated config file for this class?  Note: these should always be lowercase
+		// Is there an associated config file for this class? Note: these should always be lowercase
 		if ($config === NULL)
 		{
 			// Fetch the config paths containing any package paths
@@ -970,7 +970,7 @@
 		}
 
 		// Set the variable name we will assign the class to
-		// Was a custom class name supplied?  If so we'll use it
+		// Was a custom class name supplied? If so we'll use it
 		$class = strtolower($class);
 
 		if (is_null($object_name))
@@ -1005,7 +1005,7 @@
 	 * The config/autoload.php file contains an array that permits sub-systems,
 	 * libraries, and helpers to be loaded automatically.
 	 *
-	 * This function is public, as it's used in the CI_Controller class.  
+	 * This function is public, as it's used in the CI_Controller class.
 	 * However, there is no reason you should ever needs to use it.
 	 *
 	 * @param	array
@@ -1021,7 +1021,7 @@
 		{
 			include_once(APPPATH.'config/autoload.php');
 		}
-		
+
 
 		if ( ! isset($autoload))
 		{
diff --git a/system/core/Model.php b/system/core/Model.php
index 8566a0b..61c71b6 100644
--- a/system/core/Model.php
+++ b/system/core/Model.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/core/Output.php b/system/core/Output.php
index 05ace91..562dbb8 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -44,7 +44,7 @@
 		// Get mime types for later
 		if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'))
 		{
-		    include APPPATH.'config/'.ENVIRONMENT.'/mimes.php';
+		  include APPPATH.'config/'.ENVIRONMENT.'/mimes.php';
 		}
 		else
 		{
@@ -122,7 +122,7 @@
 	 *
 	 * Lets you set a server header which will be outputted with the final display.
 	 *
-	 * Note:  If a file is cached, headers will not be sent.  We need to figure out
+	 * Note: If a file is cached, headers will not be sent. We need to figure out
 	 * how to permit header data to be saved with the cache data...
 	 *
 	 * @access	public
@@ -261,7 +261,7 @@
 	 * $this->final_output
 	 *
 	 * This function sends the finalized output data to the browser along
-	 * with any server headers and profile data.  It also stops the
+	 * with any server headers and profile data. It also stops the
 	 * benchmark timer so the page rendering speed and memory usage can be shown.
 	 *
 	 * @access	public
@@ -269,7 +269,7 @@
 	 */
 	function _display($output = '')
 	{
-		// Note:  We use globals because we can't use $CI =& get_instance()
+		// Note: We use globals because we can't use $CI =& get_instance()
 		// since this function is sometimes called by the caching mechanism,
 		// which happens before the CI super object is available.
 		global $BM, $CFG;
@@ -290,7 +290,7 @@
 
 		// --------------------------------------------------------------------
 
-		// Do we need to write a cache file?  Only if the controller does not have its
+		// Do we need to write a cache file? Only if the controller does not have its
 		// own _output() method and we are not dealing with a cache file, which we
 		// can determine by the existence of the $CI object above
 		if ($this->cache_expiration > 0 && isset($CI) && ! method_exists($CI, '_output'))
@@ -368,7 +368,7 @@
 			// we will remove them and add them back after we insert the profile data
 			if (preg_match("|</body>.*?</html>|is", $output))
 			{
-				$output  = preg_replace("|</body>.*?</html>|is", '', $output);
+				$output = preg_replace("|</body>.*?</html>|is", '', $output);
 				$output .= $CI->profiler->run();
 				$output .= '</body></html>';
 			}
@@ -381,14 +381,14 @@
 		// --------------------------------------------------------------------
 
 		// Does the controller contain a function named _output()?
-		// If so send the output there.  Otherwise, echo it.
+		// If so send the output there. Otherwise, echo it.
 		if (method_exists($CI, '_output'))
 		{
 			$CI->_output($output);
 		}
 		else
 		{
-			echo $output;  // Send it to the browser!
+			echo $output; // Send it to the browser!
 		}
 
 		log_message('debug', "Final output sent to browser");
@@ -458,7 +458,7 @@
 	{
 		$cache_path = ($CFG->item('cache_path') == '') ? APPPATH.'cache/' : $CFG->item('cache_path');
 
-		// Build the file path.  The file name is an MD5 hash of the full URI
+		// Build the file path. The file name is an MD5 hash of the full URI
 		$uri =	$CFG->item('base_url').
 				$CFG->item('index_page').
 				$URI->uri_string;
diff --git a/system/core/Router.php b/system/core/Router.php
index 5e92a04..a76a7bd 100644
--- a/system/core/Router.php
+++ b/system/core/Router.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -61,7 +61,7 @@
 	 */
 	function _set_routing()
 	{
-		// Are query strings enabled in the config file?  Normally CI doesn't utilize query strings
+		// Are query strings enabled in the config file? Normally CI doesn't utilize query strings
 		// since URI segments are more search-engine friendly, but they can optionally be used.
 		// If this feature is enabled, we will gather the directory/class/method a little differently
 		$segments = array();
@@ -95,7 +95,7 @@
 		{
 			include(APPPATH.'config/routes.php');
 		}
-		
+
 		$this->routes = ( ! isset($route) OR ! is_array($route)) ? array() : $route;
 		unset($route);
 
@@ -103,7 +103,7 @@
 		// the URI doesn't correlated to a valid controller.
 		$this->default_controller = ( ! isset($this->routes['default_controller']) OR $this->routes['default_controller'] == '') ? FALSE : strtolower($this->routes['default_controller']);
 
-		// Were there any query string segments?  If so, we'll validate them and bail out since we're done.
+		// Were there any query string segments? If so, we'll validate them and bail out since we're done.
 		if (count($segments) > 0)
 		{
 			return $this->_validate_request($segments);
@@ -212,7 +212,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Validates the supplied segments.  Attempts to determine the path to
+	 * Validates the supplied segments. Attempts to determine the path to
 	 * the controller.
 	 *
 	 * @access	private
@@ -277,7 +277,7 @@
 
 
 		// If we've gotten this far it means that the URI does not correlate to a valid
-		// controller class.  We will now see if there is an override
+		// controller class. We will now see if there is an override
 		if ( ! empty($this->routes['404_override']))
 		{
 			$x = explode('/', $this->routes['404_override']);
@@ -296,7 +296,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Parse Routes
+	 * Parse Routes
 	 *
 	 * This function matches any routes that may exist in
 	 * the config/routes.php file against the URI to
@@ -310,7 +310,7 @@
 		// Turn the segment array into a URI string
 		$uri = implode('/', $this->uri->segments);
 
-		// Is there a literal match?  If so we're done
+		// Is there a literal match? If so we're done
 		if (isset($this->routes[$uri]))
 		{
 			return $this->_set_request(explode('/', $this->routes[$uri]));
@@ -370,7 +370,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Set the method name
+	 * Set the method name
 	 *
 	 * @access	public
 	 * @param	string
@@ -384,7 +384,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Fetch the current method
+	 * Fetch the current method
 	 *
 	 * @access	public
 	 * @return	string
@@ -402,7 +402,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Set the directory name
+	 * Set the directory name
 	 *
 	 * @access	public
 	 * @param	string
@@ -416,7 +416,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Fetch the sub-directory (if any) that contains the requested controller class
+	 * Fetch the sub-directory (if any) that contains the requested controller class
 	 *
 	 * @access	public
 	 * @return	string
@@ -429,7 +429,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Set the controller overrides
+	 * Set the controller overrides
 	 *
 	 * @access	public
 	 * @param	array
diff --git a/system/core/Security.php b/system/core/Security.php
index 3617cad..f5bfafd 100644
--- a/system/core/Security.php
+++ b/system/core/Security.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -25,10 +25,10 @@
  * @link		http://codeigniter.com/user_guide/libraries/security.html
  */
 class CI_Security {
-	
+
 	protected $_xss_hash			= '';
 	protected $_csrf_hash			= '';
-	protected $_csrf_expire			= 7200;  // Two hours (in seconds)
+	protected $_csrf_expire			= 7200; // Two hours (in seconds)
 	protected $_csrf_token_name		= 'ci_csrf_token';
 	protected $_csrf_cookie_name	= 'ci_csrf_token';
 
@@ -52,7 +52,7 @@
 					"vbscript\s*:"				=> '[removed]', // IE, surprise!
 					"Redirect\s+302"			=> '[removed]'
 	);
-	
+
 	/**
 	 * Constructor
 	 */
@@ -95,7 +95,7 @@
 		}
 
 		// Do the tokens exist in both the _POST and _COOKIE arrays?
-		if ( ! isset($_POST[$this->_csrf_token_name]) OR 
+		if ( ! isset($_POST[$this->_csrf_token_name]) OR
 			 ! isset($_COOKIE[$this->_csrf_cookie_name]))
 		{
 			$this->csrf_show_error();
@@ -107,7 +107,7 @@
 			$this->csrf_show_error();
 		}
 
-		// We kill this since we're done and we don't want to 
+		// We kill this since we're done and we don't want to
 		// polute the _POST array
 		unset($_POST[$this->_csrf_token_name]);
 
@@ -117,7 +117,7 @@
 		$this->csrf_set_cookie();
 
 		log_message('debug', "CSRF token verified ");
-		
+
 		return $this;
 	}
 
@@ -146,7 +146,7 @@
 		setcookie($this->_csrf_cookie_name, $this->_csrf_hash, $expire, config_item('cookie_path'), config_item('cookie_domain'), $secure_cookie);
 
 		log_message('debug', "CRSF cookie Set");
-		
+
 		return $this;
 	}
 
@@ -165,9 +165,9 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Get CSRF Hash 
+	 * Get CSRF Hash
 	 *
-	 * Getter Method 
+	 * Getter Method
 	 *
 	 * @return 	string 	self::_csrf_hash
 	 */
@@ -196,14 +196,14 @@
 	 * XSS Clean
 	 *
 	 * Sanitizes data so that Cross Site Scripting Hacks can be
-	 * prevented.  This function does a fair amount of work but
+	 * prevented. This function does a fair amount of work but
 	 * it is extremely thorough, designed to prevent even the
-	 * most obscure XSS attempts.  Nothing is ever 100% foolproof,
+	 * most obscure XSS attempts. Nothing is ever 100% foolproof,
 	 * of course, but I haven't been able to get anything passed
 	 * the filter.
 	 *
 	 * Note: This function should only be used to deal with data
-	 * upon submission.  It's not something that should
+	 * upon submission. It's not something that should
 	 * be used for general runtime processing.
 	 *
 	 * This function was based in part on some code and ideas I
@@ -263,7 +263,7 @@
 		 */
 
 		$str = preg_replace_callback("/[a-z]+=([\'\"]).*?\\1/si", array($this, '_convert_attribute'), $str);
-	
+
 		$str = preg_replace_callback("/<\w+.*?(?=>|<|$)/si", array($this, '_decode_entity'), $str);
 
 		/*
@@ -276,7 +276,7 @@
 		 *
 		 * This prevents strings like this: ja	vascript
 		 * NOTE: we deal with spaces between characters later.
-		 * NOTE: preg_replace was found to be amazingly slow here on 
+		 * NOTE: preg_replace was found to be amazingly slow here on
 		 * large blocks of data, so we use str_replace.
 		 */
 
@@ -304,27 +304,27 @@
 		 */
 		if ($is_image === TRUE)
 		{
-			// Images have a tendency to have the PHP short opening and 
-			// closing tags every so often so we skip those and only 
+			// Images have a tendency to have the PHP short opening and
+			// closing tags every so often so we skip those and only
 			// do the long opening tags.
 			$str = preg_replace('/<\?(php)/i', "&lt;?\\1", $str);
 		}
 		else
 		{
-			$str = str_replace(array('<?', '?'.'>'),  array('&lt;?', '?&gt;'), $str);
+			$str = str_replace(array('<?', '?'.'>'), array('&lt;?', '?&gt;'), $str);
 		}
 
 		/*
 		 * Compact any exploded words
 		 *
-		 * This corrects words like:  j a v a s c r i p t
+		 * This corrects words like: j a v a s c r i p t
 		 * These words are compacted back to their correct state.
 		 */
 		$words = array(
-				'javascript', 'expression', 'vbscript', 'script', 
+				'javascript', 'expression', 'vbscript', 'script',
 				'applet', 'alert', 'document', 'write', 'cookie', 'window'
 			);
-			
+
 		foreach ($words as $word)
 		{
 			$temp = '';
@@ -341,8 +341,8 @@
 
 		/*
 		 * Remove disallowed Javascript in links or img tags
-		 * We used to do some version comparisons and use of stripos for PHP5, 
-		 * but it is dog slow compared to these simplified non-capturing 
+		 * We used to do some version comparisons and use of stripos for PHP5,
+		 * but it is dog slow compared to these simplified non-capturing
 		 * preg_match(), especially if the pattern exists in the string
 		 */
 		do
@@ -388,7 +388,7 @@
 		 *
 		 * Similar to above, only instead of looking for
 		 * tags it looks for PHP and JavaScript commands
-		 * that are disallowed.  Rather than removing the
+		 * that are disallowed. Rather than removing the
 		 * code, it simply converts the parenthesis to entities
 		 * rendering the code un-executable.
 		 *
@@ -405,11 +405,11 @@
 
 		/*
 		 * Images are Handled in a Special Way
-		 * - Essentially, we want to know that after all of the character 
-		 * conversion is done whether any unwanted, likely XSS, code was found.  
+		 * - Essentially, we want to know that after all of the character
+		 * conversion is done whether any unwanted, likely XSS, code was found.
 		 * If not, we return TRUE, as the image is clean.
-		 * However, if the string post-conversion does not matched the 
-		 * string post-removal of XSS, then it fails, as there was unwanted XSS 
+		 * However, if the string post-conversion does not matched the
+		 * string post-removal of XSS, then it fails, as there was unwanted XSS
 		 * code found and removed/changed during processing.
 		 */
 
@@ -457,7 +457,7 @@
 	 *
 	 * In some versions of PHP the native function does not work
 	 * when UTF-8 is the specified character set, so this gives us
-	 * a work-around.  More info here:
+	 * a work-around. More info here:
 	 * http://bugs.php.net/bug.php?id=25670
 	 *
 	 * NOTE: html_entity_decode() has a bug in some PHP versions when UTF-8 is the
@@ -475,10 +475,10 @@
 		// The reason we are not using html_entity_decode() by itself is because
 		// while it is not technically correct to leave out the semicolon
 		// at the end of an entity most browsers will still interpret the entity
-		// correctly.  html_entity_decode() does not convert entities without
+		// correctly. html_entity_decode() does not convert entities without
 		// semicolons, so we are left with our own little solution here. Bummer.
 
-		if (function_exists('html_entity_decode') && 
+		if (function_exists('html_entity_decode') &&
 			(strtolower($charset) != 'utf-8'))
 		{
 			$str = html_entity_decode($str, ENT_COMPAT, $charset);
@@ -542,7 +542,7 @@
 						"%3b",		// ;
 						"%3d"		// =
 					);
-		
+
 		if ( ! $relative_path)
 		{
 			$bad[] = './';
@@ -570,7 +570,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/*
 	 * Remove Evil HTML Attributes (like evenhandlers and style)
 	 *
@@ -578,7 +578,7 @@
 	 * 	- Everything up until a space
 	 *		For example, everything between the pipes:
 	 *		<a |style=document.write('hello');alert('world');| class=link>
-	 * 	- Everything inside the quotes 
+	 * 	- Everything inside the quotes
 	 *		For example, everything between the pipes:
 	 *		<a |style="document.write('hello'); alert('world');"| class="link">
 	 *
@@ -594,12 +594,12 @@
 		if ($is_image === TRUE)
 		{
 			/*
-			 * Adobe Photoshop puts XML metadata into JFIF images, 
+			 * Adobe Photoshop puts XML metadata into JFIF images,
 			 * including namespacing, so we have to allow this for images.
 			 */
 			unset($evil_attributes[array_search('xmlns', $evil_attributes)]);
 		}
-		
+
 		do {
 			$str = preg_replace(
 				"#<(/?[^><]+?)([^A-Za-z\-])(".implode('|', $evil_attributes).")(\s*=\s*)([\"][^>]*?[\"]|[\'][^>]*?[\']|[^>]*?)([\s><])([><]*)#i",
@@ -607,10 +607,10 @@
 				$str, -1, $count
 			);
 		} while ($count);
-		
+
 		return $str;
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
@@ -627,7 +627,7 @@
 		$str = '&lt;'.$matches[1].$matches[2].$matches[3];
 
 		// encode captured opening or closing brace to prevent recursive vectors
-		$str .= str_replace(array('>', '<'), array('&gt;', '&lt;'), 
+		$str .= str_replace(array('>', '<'), array('&gt;', '&lt;'),
 							$matches[4]);
 
 		return $str;
@@ -649,7 +649,7 @@
 	protected function _js_link_removal($match)
 	{
 		$attributes = $this->_filter_attributes(str_replace(array('<', '>'), '', $match[1]));
-		
+
 		return str_replace($match[1], preg_replace("#href=.*?(alert\(|alert&\#40;|javascript\:|livescript\:|mocha\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)#si", "", $attributes), $match[0]);
 	}
 
@@ -669,7 +669,7 @@
 	protected function _js_img_removal($match)
 	{
 		$attributes = $this->_filter_attributes(str_replace(array('<', '>'), '', $match[1]));
-		
+
 		return str_replace($match[1], preg_replace("#src=.*?(alert\(|alert&\#40;|javascript\:|livescript\:|mocha\:|charset\=|window\.|document\.|\.cookie|<script|<xss|base64\s*,)#si", "", $attributes), $match[0]);
 	}
 
@@ -729,13 +729,13 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Validate URL entities
 	 *
 	 * Called by xss_clean()
 	 *
-	 * @param 	string	
+	 * @param 	string
 	 * @return 	string
 	 */
 	protected function _validate_entities($str)
@@ -743,15 +743,15 @@
 		/*
 		 * Protect GET variables in URLs
 		 */
-		
+
 		 // 901119URL5918AMP18930PROTECT8198
-		
+
 		$str = preg_replace('|\&([a-z\_0-9\-]+)\=([a-z\_0-9\-]+)|i', $this->xss_hash()."\\1=\\2", $str);
 
 		/*
 		 * Validate standard character entities
 		 *
-		 * Add a semicolon if missing.  We do this to enable
+		 * Add a semicolon if missing. We do this to enable
 		 * the conversion of entities to ASCII later.
 		 *
 		 */
@@ -769,7 +769,7 @@
 		 * Un-Protect GET variables in URLs
 		 */
 		$str = str_replace($this->xss_hash(), '&', $str);
-		
+
 		return $str;
 	}
 
@@ -794,7 +794,7 @@
 		{
 			$str = preg_replace("#".$key."#i", $val, $str);
 		}
-		
+
 		return $str;
 	}
 
@@ -809,16 +809,16 @@
 	{
 		if ($this->_csrf_hash == '')
 		{
-			// If the cookie exists we will use it's value.  
+			// If the cookie exists we will use it's value.
 			// We don't necessarily want to regenerate it with
-			// each page load since a page could contain embedded 
+			// each page load since a page could contain embedded
 			// sub-pages causing this feature to fail
-			if (isset($_COOKIE[$this->_csrf_cookie_name]) && 
+			if (isset($_COOKIE[$this->_csrf_cookie_name]) &&
 				$_COOKIE[$this->_csrf_cookie_name] != '')
 			{
 				return $this->_csrf_hash = $_COOKIE[$this->_csrf_cookie_name];
 			}
-			
+
 			return $this->_csrf_hash = md5(uniqid(rand(), TRUE));
 		}
 
diff --git a/system/core/URI.php b/system/core/URI.php
index d565486..94fac59 100644
--- a/system/core/URI.php
+++ b/system/core/URI.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -36,7 +36,7 @@
 	/**
 	 * Constructor
 	 *
-	 * Simply globalizes the $RTR object.  The front
+	 * Simply globalizes the $RTR object. The front
 	 * loads the Router class early on so it's not available
 	 * normally as other classes are.
 	 *
@@ -85,7 +85,7 @@
 			}
 
 			// No PATH_INFO?... What about QUERY_STRING?
-			$path =  (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
+			$path = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
 			if (trim($path, '/') != '')
 			{
 				$this->_set_uri_string($path);
@@ -251,7 +251,7 @@
 	 */
 	function _remove_url_suffix()
 	{
-		if  ($this->config->item('url_suffix') != "")
+		if ($this->config->item('url_suffix') != "")
 		{
 			$this->uri_string = preg_replace("|".preg_quote($this->config->item('url_suffix'))."$|", "", $this->uri_string);
 		}
@@ -285,7 +285,7 @@
 	 * Re-index Segments
 	 *
 	 * This function re-indexes the $this->segment array so that it
-	 * starts at 1 rather than 0.  Doing so makes it simpler to
+	 * starts at 1 rather than 0. Doing so makes it simpler to
 	 * use functions like $this->uri->segment(n) since there is
 	 * a 1:1 relationship between the segment array and the actual segments.
 	 *
@@ -323,7 +323,7 @@
 	 * Fetch a URI "routed" Segment
 	 *
 	 * This function returns the re-routed URI segment (assuming routing rules are used)
-	 * based on the number provided.  If there is no routing this function returns the
+	 * based on the number provided. If there is no routing this function returns the
 	 * same result as $this->segment()
 	 *
 	 * @access	public
@@ -425,7 +425,7 @@
 
 		$i = 0;
 		$lastval = '';
-		$retval  = array();
+		$retval = array();
 		foreach ($segments as $seg)
 		{
 			if ($i % 2)
diff --git a/system/core/Utf8.php b/system/core/Utf8.php
index 2a27d1f..738d7e9 100644
--- a/system/core/Utf8.php
+++ b/system/core/Utf8.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/DB.php b/system/database/DB.php
index 33207d8..4481cef 100644
--- a/system/database/DB.php
+++ b/system/database/DB.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -35,7 +35,7 @@
 				show_error('The configuration file database.php does not exist.');
 			}
 		}
-		
+
 		include($file_path);
 
 		if ( ! isset($db) OR count($db) == 0)
@@ -59,10 +59,10 @@
 	{
 
 		/* parse the URL from the DSN string
-		 *  Database settings can be passed as discreet
-		 *  parameters or as a data source name in the first
-		 *  parameter. DSNs must have this prototype:
-		 *  $dsn = 'driver://username:password@hostname/database';
+		 * Database settings can be passed as discreet
+		 * parameters or as a data source name in the first
+		 * parameter. DSNs must have this prototype:
+		 * $dsn = 'driver://username:password@hostname/database';
 		 */
 
 		if (($dns = @parse_url($params)) === FALSE)
@@ -100,13 +100,13 @@
 		}
 	}
 
-	// No DB specified yet?  Beat them senseless...
+	// No DB specified yet? Beat them senseless...
 	if ( ! isset($params['dbdriver']) OR $params['dbdriver'] == '')
 	{
 		show_error('You have not selected a database type to connect to.');
 	}
 
-	// Load the DB classes.  Note: Since the active record class is optional
+	// Load the DB classes. Note: Since the active record class is optional
 	// we need to dynamically create a class that extends proper parent class
 	// based on whether we're using the active record class or not.
 	// Kudos to Paul for discovering this clever use of eval()
diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index 9ceac0b..508f6be 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -58,7 +58,7 @@
 	var $ar_cache_having		= array();
 	var $ar_cache_orderby		= array();
 	var $ar_cache_set			= array();
-	
+
 	var $ar_no_escape 			= array();
 
 
@@ -175,7 +175,7 @@
 	 *	select_max()
 	 *	select_min()
 	 *	select_avg()
-	 *  select_sum()
+	 * select_sum()
 	 *
 	 * @access	public
 	 * @param	string	the field
@@ -286,7 +286,7 @@
 			{
 				$val = trim($val);
 
-				// Extract any aliases that might exist.  We use this information
+				// Extract any aliases that might exist. We use this information
 				// in the _protect_identifiers to know whether to add a table prefix
 				$this->_track_aliases($val);
 
@@ -332,7 +332,7 @@
 			}
 		}
 
-		// Extract any aliases that might exist.  We use this information
+		// Extract any aliases that might exist. We use this information
 		// in the _protect_identifiers to know whether to add a table prefix
 		$this->_track_aliases($table);
 
@@ -438,7 +438,7 @@
 
 					$v = ' '.$this->escape($v);
 				}
-				
+
 				if ( ! $this->_has_operator($k))
 				{
 					$k .= ' = ';
@@ -926,7 +926,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set" function.  Allows key/value pairs to be set for inserting or updating
+	 * The "set" function. Allows key/value pairs to be set for inserting or updating
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -1084,7 +1084,7 @@
 		{
 			if ($this->db_debug)
 			{
-				//No valid data array.  Folds in cases where keys and values did not match up
+				//No valid data array. Folds in cases where keys and values did not match up
 				return $this->display_error('db_must_use_set');
 			}
 			return FALSE;
@@ -1124,7 +1124,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set_insert_batch" function.  Allows key/value pairs to be set for batch inserts
+	 * The "set_insert_batch" function. Allows key/value pairs to be set for batch inserts
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -1158,7 +1158,7 @@
 
 			if ($escape === FALSE)
 			{
-				$this->ar_set[] =  '('.implode(',', $row).')';
+				$this->ar_set[] = '('.implode(',', $row).')';
 			}
 			else
 			{
@@ -1169,7 +1169,7 @@
 					$clean[] = $this->escape($value);
 				}
 
-				$this->ar_set[] =  '('.implode(',', $clean).')';
+				$this->ar_set[] = '('.implode(',', $clean).')';
 			}
 		}
 
@@ -1399,7 +1399,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set_update_batch" function.  Allows key/value pairs to be set for batch updating
+	 * The "set_update_batch" function. Allows key/value pairs to be set for batch updating
 	 *
 	 * @access	public
 	 * @param	array
@@ -1652,7 +1652,7 @@
 			return;
 		}
 
-		// Does the string contain a comma?  If so, we need to separate
+		// Does the string contain a comma? If so, we need to separate
 		// the string into discreet statements
 		if (strpos($table, ',') !== FALSE)
 		{
@@ -1682,7 +1682,7 @@
 	 * Compile the SELECT statement
 	 *
 	 * Generates a query string based on which functions were used.
-	 * Should not be called directly.  The get() function calls it.
+	 * Should not be called directly. The get() function calls it.
 	 *
 	 * @access	private
 	 * @return	string
@@ -1989,7 +1989,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Resets the active record values.  Called by the get() function
+	 * Resets the active record values. Called by the get() function
 	 *
 	 * @access	private
 	 * @param	array	An array of fields to reset
@@ -2009,7 +2009,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Resets the active record values.  Called by the get() function
+	 * Resets the active record values. Called by the get() function
 	 *
 	 * @access	private
 	 * @return	void
diff --git a/system/database/DB_cache.php b/system/database/DB_cache.php
index 3bf065c..3249e9d 100644
--- a/system/database/DB_cache.php
+++ b/system/database/DB_cache.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -64,7 +64,7 @@
 		}
 
 		// Add a trailing slash to the path if needed
-		$path = preg_replace("/(.+?)\/*$/", "\\1/",  $path);
+		$path = preg_replace("/(.+?)\/*$/", "\\1/", $path);
 
 		if ( ! is_dir($path) OR ! is_really_writable($path))
 		{
@@ -162,7 +162,7 @@
 	{
 		if ($segment_one == '')
 		{
-			$segment_one  = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1);
+			$segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1);
 		}
 
 		if ($segment_two == '')
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index 10e8ed0..40be2f9 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -73,7 +73,7 @@
 
 
 	/**
-	 * Constructor.  Accepts one parameter containing the database
+	 * Constructor. Accepts one parameter containing the database
 	 * connection settings.
 	 *
 	 * @param array
@@ -114,7 +114,7 @@
 		// Connect to the database and set the connection ID
 		$this->conn_id = ($this->pconnect == FALSE) ? $this->db_connect() : $this->db_pconnect();
 
-		// No connection resource?  Throw an error
+		// No connection resource? Throw an error
 		if ( ! $this->conn_id)
 		{
 			log_message('error', 'Unable to connect to the database');
@@ -199,7 +199,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Database Version Number.  Returns a string containing the
+	 * Database Version Number. Returns a string containing the
 	 * version of the database being used
 	 *
 	 * @access	public
@@ -237,7 +237,7 @@
 	 * Execute the query
 	 *
 	 * Accepts an SQL string as input and returns a result object upon
-	 * successful execution of a "read" type query.  Returns boolean TRUE
+	 * successful execution of a "read" type query. Returns boolean TRUE
 	 * upon successful execution of a "write" type query. Returns boolean
 	 * FALSE upon failure, and if the $db_debug variable is set to TRUE
 	 * will raise an error.
@@ -265,7 +265,7 @@
 			$sql = preg_replace("/(\W)".$this->swap_pre."(\S+?)/", "\\1".$this->dbprefix."\\2", $sql);
 		}
 
-		// Is query caching enabled?  If the query is a "read type"
+		// Is query caching enabled? If the query is a "read type"
 		// we will load the caching class and return the previously
 		// cached query if it exists
 		if ($this->cache_on == TRUE AND stristr($sql, 'SELECT'))
@@ -286,7 +286,7 @@
 			$sql = $this->compile_binds($sql, $binds);
 		}
 
-		// Save the  query for debugging
+		// Save the query for debugging
 		if ($this->save_queries == TRUE)
 		{
 			$this->queries[] = $sql;
@@ -314,7 +314,7 @@
 				$error_msg = $this->_error_message();
 
 				// We call this function in order to roll-back queries
-				// if transactions are enabled.  If we don't call this here
+				// if transactions are enabled. If we don't call this here
 				// the error message will trigger an exit, causing the
 				// transactions to remain in limbo.
 				$this->trans_complete();
@@ -385,7 +385,7 @@
 		// oci8 vars must be set before calling this
 		$RES->num_rows	= $RES->num_rows();
 
-		// Is query caching enabled?  If so, we'll serialize the
+		// Is query caching enabled? If so, we'll serialize the
 		// result object and save it to a cache file.
 		if ($this->cache_on == TRUE AND $this->_cache_init())
 		{
@@ -435,7 +435,7 @@
 
 	/**
 	 * Simple Query
-	 * This is a simplified version of the query() function.  Internally
+	 * This is a simplified version of the query() function. Internally
 	 * we only use it when running transaction commands since they do
 	 * not require all the features of the main query() function.
 	 *
@@ -718,7 +718,7 @@
 	/**
 	 * Primary
 	 *
-	 * Retrieves the primary key.  It assumes that the row in the first
+	 * Retrieves the primary key. It assumes that the row in the first
 	 * position is the primary key
 	 *
 	 * @access	public
@@ -1216,8 +1216,8 @@
 	 * This function is used extensively by the Active Record class, and by
 	 * a couple functions in this class.
 	 * It takes a column or table name (optionally with an alias) and inserts
-	 * the table prefix onto it.  Some logic is necessary in order to deal with
-	 * column names that include the path.  Consider a query like this:
+	 * the table prefix onto it. Some logic is necessary in order to deal with
+	 * column names that include the path. Consider a query like this:
 	 *
 	 * SELECT * FROM hostname.database.table.column AS c FROM hostname.database.table
 	 *
@@ -1270,7 +1270,7 @@
 
 		// This is basically a bug fix for queries that use MAX, MIN, etc.
 		// If a parenthesis is found we know that we do not need to
-		// escape the data or add a prefix.  There's probably a more graceful
+		// escape the data or add a prefix. There's probably a more graceful
 		// way to deal with this, but I'm not thinking of it -- Rick
 		if (strpos($item, '(') !== FALSE)
 		{
@@ -1285,7 +1285,7 @@
 			$parts	= explode('.', $item);
 
 			// Does the first segment of the exploded item match
-			// one of the aliases previously identified?  If so,
+			// one of the aliases previously identified? If so,
 			// we have nothing more to do other than escape the item
 			if (in_array($parts[0], $this->ar_aliased_tables))
 			{
@@ -1304,7 +1304,7 @@
 				return $item.$alias;
 			}
 
-			// Is there a table prefix defined in the config file?  If not, no need to do anything
+			// Is there a table prefix defined in the config file? If not, no need to do anything
 			if ($this->dbprefix != '')
 			{
 				// We now add the table prefix based on some logic.
@@ -1358,7 +1358,7 @@
 			return $item.$alias;
 		}
 
-		// Is there a table prefix?  If not, no need to insert it
+		// Is there a table prefix? If not, no need to insert it
 		if ($this->dbprefix != '')
 		{
 			// Verify table prefix and replace if necessary
diff --git a/system/database/DB_forge.php b/system/database/DB_forge.php
index a71fca7..9730c77 100644
--- a/system/database/DB_forge.php
+++ b/system/database/DB_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * Code Igniter
  *
diff --git a/system/database/DB_result.php b/system/database/DB_result.php
index 76e1d6a..06eec51 100644
--- a/system/database/DB_result.php
+++ b/system/database/DB_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -28,18 +28,18 @@
  */
 class CI_DB_result {
 
-	var $conn_id		      = NULL;
-	var $result_id		      = NULL;
-	var $result_array	      = array();
-	var $result_object	      = array();
-    var $custom_result_object = array();
-	var $current_row	      = 0;
-	var $num_rows		      = 0;
-	var $row_data		      = NULL;
+	var $conn_id		  = NULL;
+	var $result_id		  = NULL;
+	var $result_array	  = array();
+	var $result_object	  = array();
+ var $custom_result_object = array();
+	var $current_row	  = 0;
+	var $num_rows		  = 0;
+	var $row_data		  = NULL;
 
 
 	/**
-	 * Query result.  Acts as a wrapper function for the following functions.
+	 * Query result. Acts as a wrapper function for the following functions.
 	 *
 	 * @access	public
 	 * @param	string	can be "object" or "array"
@@ -47,50 +47,50 @@
 	 */
 	function result($type = 'object')
 	{
-        if ($type == 'array') return $this->result_array();
-        else if ($type == 'object') return $this->result_object();
-        else return $this->custom_result_object($type);
+  if ($type == 'array') return $this->result_array();
+  else if ($type == 'object') return $this->result_object();
+  else return $this->custom_result_object($type);
 	}
 
 	// --------------------------------------------------------------------
 
-    /**
-     * Custom query result.
-     *
-     * @param  class_name  A string that represents the type of object you want back
-     * @return array of objects
-     */
-    function custom_result_object($class_name)
-    {
-        if (array_key_exists($class_name, $this->custom_result_object))
-        {
-            return $this->custom_result_object[$class_name];
-        }
-        
-        if ($this->result_id === FALSE OR $this->num_rows() == 0)
-        {
-            return array();
-        }
+ /**
+  * Custom query result.
+  *
+  * @param class_name A string that represents the type of object you want back
+  * @return array of objects
+  */
+ function custom_result_object($class_name)
+ {
+  if (array_key_exists($class_name, $this->custom_result_object))
+  {
+   return $this->custom_result_object[$class_name];
+  }
 
-        // add the data to the object
-        $this->_data_seek(0);
-        $result_object = array();
+  if ($this->result_id === FALSE OR $this->num_rows() == 0)
+  {
+   return array();
+  }
+
+  // add the data to the object
+  $this->_data_seek(0);
+  $result_object = array();
 		while ($row = $this->_fetch_object())
-        {
-            $object = new $class_name();
-            foreach ($row as $key => $value)
-            {
-                $object->$key = $value;
-            }
+  {
+   $object = new $class_name();
+   foreach ($row as $key => $value)
+   {
+    $object->$key = $value;
+   }
 			$result_object[] = $object;
 		}
 
-        // return the array
-        return $this->custom_result_object[$class_name] = $result_object;
-    }
+  // return the array
+  return $this->custom_result_object[$class_name] = $result_object;
+ }
 
 	/**
-	 * Query result.  "object" version.
+	 * Query result. "object" version.
 	 *
 	 * @access	public
 	 * @return	object
@@ -122,7 +122,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Query result.  "array" version.
+	 * Query result. "array" version.
 	 *
 	 * @access	public
 	 * @return	array
@@ -154,7 +154,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Query result.  Acts as a wrapper function for the following functions.
+	 * Query result. Acts as a wrapper function for the following functions.
 	 *
 	 * @access	public
 	 * @param	string
@@ -180,9 +180,9 @@
 			$n = 0;
 		}
 
-        if ($type == 'object') return $this->row_object($n);
-        else if ($type == 'array') return $this->row_array($n);
-        else return $this->custom_row_object($n, $type);
+  if ($type == 'object') return $this->row_object($n);
+  else if ($type == 'array') return $this->row_array($n);
+  else return $this->custom_row_object($n, $type);
 	}
 
 	// --------------------------------------------------------------------
@@ -219,7 +219,7 @@
 
 	// --------------------------------------------------------------------
 
-    /**
+ /**
 	 * Returns a single result row - custom object version
 	 *
 	 * @access	public
@@ -242,7 +242,7 @@
 		return $result[$this->current_row];
 	}
 
-    /**
+ /**
 	 * Returns a single result row - object version
 	 *
 	 * @access	public
@@ -383,9 +383,9 @@
 	/**
 	 * The following functions are normally overloaded by the identically named
 	 * methods in the platform-specific driver -- except when query caching
-	 * is used.  When caching is enabled we do not load the other driver.
+	 * is used. When caching is enabled we do not load the other driver.
 	 * These functions are primarily here to prevent undefined function errors
-	 * when a cached result object is in use.  They are not otherwise fully
+	 * when a cached result object is in use. They are not otherwise fully
 	 * operational due to the unavailability of the database resource IDs with
 	 * cached results.
 	 */
diff --git a/system/database/DB_utility.php b/system/database/DB_utility.php
index a5f174f..a3c00a5 100644
--- a/system/database/DB_utility.php
+++ b/system/database/DB_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * Code Igniter
  *
@@ -342,10 +342,10 @@
 
 		// ------------------------------------------------------
 
-		// Is the encoder supported?  If not, we'll either issue an
+		// Is the encoder supported? If not, we'll either issue an
 		// error or use plain text depending on the debug settings
 		if (($prefs['format'] == 'gzip' AND ! @function_exists('gzencode'))
-		OR ($prefs['format'] == 'zip'  AND ! @function_exists('gzcompress')))
+		OR ($prefs['format'] == 'zip' AND ! @function_exists('gzcompress')))
 		{
 			if ($this->db->db_debug)
 			{
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index 65397ed..56ecf32 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/mssql/mssql_forge.php b/system/database/drivers/mssql/mssql_forge.php
index 70b20ec..03151b2 100644
--- a/system/database/drivers/mssql/mssql_forge.php
+++ b/system/database/drivers/mssql/mssql_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -103,7 +103,7 @@
 
 				$sql .= "\n\t".$this->db->_protect_identifiers($field);
 
-				$sql .=  ' '.$attributes['TYPE'];
+				$sql .= ' '.$attributes['TYPE'];
 
 				if (array_key_exists('CONSTRAINT', $attributes))
 				{
diff --git a/system/database/drivers/mssql/mssql_result.php b/system/database/drivers/mssql/mssql_result.php
index 2897ca5..f1f6dbb 100644
--- a/system/database/drivers/mssql/mssql_result.php
+++ b/system/database/drivers/mssql/mssql_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -120,7 +120,7 @@
 	/**
 	 * Data Seek
 	 *
-	 * Moves the internal pointer to the desired offset.  We call
+	 * Moves the internal pointer to the desired offset. We call
 	 * this internally before fetching results to make sure the
 	 * result set starts at zero
 	 *
diff --git a/system/database/drivers/mssql/mssql_utility.php b/system/database/drivers/mssql/mssql_utility.php
index 48ecbc7..3ee4d4b 100644
--- a/system/database/drivers/mssql/mssql_utility.php
+++ b/system/database/drivers/mssql/mssql_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index b7d547c..dec1586 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -133,7 +133,7 @@
 	function db_set_charset($charset, $collation)
 	{
 		static $use_set_names;
-		
+
 		if ( ! isset($use_set_names))
 		{
 			// mysql_set_charset() requires PHP >= 5.2.3 and MySQL >= 5.0.7, use SET NAMES as fallback
@@ -302,12 +302,12 @@
 		if (is_array($str))
 		{
 			foreach ($str as $key => $val)
-	   		{
+	  		{
 				$str[$key] = $this->escape_str($val, $like);
-	   		}
+	  		}
 
-	   		return $str;
-	   	}
+	  		return $str;
+	  	}
 
 		if (function_exists('mysql_real_escape_string') AND is_resource($this->conn_id))
 		{
@@ -650,7 +650,7 @@
 			{
 				if ($field != $index)
 				{
-					$final[$field][] =  'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/database/drivers/mysql/mysql_forge.php b/system/database/drivers/mysql/mysql_forge.php
index 529ec98..5328a7b 100644
--- a/system/database/drivers/mysql/mysql_forge.php
+++ b/system/database/drivers/mysql/mysql_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -86,7 +86,7 @@
 
 				if (array_key_exists('TYPE', $attributes))
 				{
-					$sql .=  ' '.$attributes['TYPE'];
+					$sql .= ' '.$attributes['TYPE'];
 
 					if (array_key_exists('CONSTRAINT', $attributes))
 					{
diff --git a/system/database/drivers/mysql/mysql_result.php b/system/database/drivers/mysql/mysql_result.php
index 5073896..19875ba 100644
--- a/system/database/drivers/mysql/mysql_result.php
+++ b/system/database/drivers/mysql/mysql_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -120,7 +120,7 @@
 	/**
 	 * Data Seek
 	 *
-	 * Moves the internal pointer to the desired offset.  We call
+	 * Moves the internal pointer to the desired offset. We call
 	 * this internally before fetching results to make sure the
 	 * result set starts at zero
 	 *
diff --git a/system/database/drivers/mysql/mysql_utility.php b/system/database/drivers/mysql/mysql_utility.php
index e9747c5..5ce384c 100644
--- a/system/database/drivers/mysql/mysql_utility.php
+++ b/system/database/drivers/mysql/mysql_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -137,7 +137,7 @@
 			}
 
 			// Fetch the field names and determine if the field is an
-			// integer type.  We use this info to decide whether to
+			// integer type. We use this info to decide whether to
 			// surround the data with quotes or not
 
 			$i = 0;
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index b8586c2..74f55c4 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -133,7 +133,7 @@
 	function _db_set_charset($charset, $collation)
 	{
 		static $use_set_names;
-		
+
 		if ( ! isset($use_set_names))
 		{
 			// mysqli_set_charset() requires MySQL >= 5.0.7, use SET NAMES as fallback
@@ -568,7 +568,7 @@
 	{
 		return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES ".implode(', ', $values);
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
@@ -630,7 +630,7 @@
 			{
 				if ($field != $index)
 				{
-					$final[$field][] =  'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
+					$final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
 				}
 			}
 		}
diff --git a/system/database/drivers/mysqli/mysqli_forge.php b/system/database/drivers/mysqli/mysqli_forge.php
index d509733..6450968 100644
--- a/system/database/drivers/mysqli/mysqli_forge.php
+++ b/system/database/drivers/mysqli/mysqli_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -86,7 +86,7 @@
 
 				if (array_key_exists('TYPE', $attributes))
 				{
-					$sql .=  ' '.$attributes['TYPE'];
+					$sql .= ' '.$attributes['TYPE'];
 				}
 
 				if (array_key_exists('CONSTRAINT', $attributes))
diff --git a/system/database/drivers/mysqli/mysqli_result.php b/system/database/drivers/mysqli/mysqli_result.php
index c4d8f5d..8b46134 100644
--- a/system/database/drivers/mysqli/mysqli_result.php
+++ b/system/database/drivers/mysqli/mysqli_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -120,7 +120,7 @@
 	/**
 	 * Data Seek
 	 *
-	 * Moves the internal pointer to the desired offset.  We call
+	 * Moves the internal pointer to the desired offset. We call
 	 * this internally before fetching results to make sure the
 	 * result set starts at zero
 	 *
diff --git a/system/database/drivers/mysqli/mysqli_utility.php b/system/database/drivers/mysqli/mysqli_utility.php
index e17889b..5d1f1a6 100644
--- a/system/database/drivers/mysqli/mysqli_utility.php
+++ b/system/database/drivers/mysqli/mysqli_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index 14df104..3a05ce3 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -6,7 +6,7 @@
  *
  * @package		CodeIgniter
  * @author		ExpressionEngine Dev Team
- * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
+ * @copyright  Copyright (c) 2008 - 2011, EllisLab, Inc.
  * @license		http://codeigniter.com/user_guide/license.html
  * @link		http://codeigniter.com
  * @since		Version 1.0
@@ -23,7 +23,7 @@
  * class is being used or not.
  *
  * @package		CodeIgniter
- * @subpackage  Drivers
+ * @subpackage Drivers
  * @category	Database
  * @author		ExpressionEngine Dev Team
  * @link		http://codeigniter.com/user_guide/database/
@@ -37,7 +37,7 @@
  *
  * NOTE: this uses the PHP 4 oci methods
  *
- * @author	  Kelly McArdle
+ * @author	 Kelly McArdle
  *
  */
 
@@ -74,8 +74,8 @@
 	/**
 	 * Non-persistent database connection
 	 *
-	 * @access  private called by the base class
-	 * @return  resource
+	 * @access private called by the base class
+	 * @return resource
 	 */
 	function db_connect()
 	{
@@ -87,8 +87,8 @@
 	/**
 	 * Persistent database connection
 	 *
-	 * @access  private called by the base class
-	 * @return  resource
+	 * @access private called by the base class
+	 * @return resource
 	 */
 	function db_pconnect()
 	{
@@ -116,8 +116,8 @@
 	/**
 	 * Select the database
 	 *
-	 * @access  private called by the base class
-	 * @return  resource
+	 * @access private called by the base class
+	 * @return resource
 	 */
 	function db_select()
 	{
@@ -145,8 +145,8 @@
 	/**
 	 * Version number query string
 	 *
-	 * @access  public
-	 * @return  string
+	 * @access public
+	 * @return string
 	 */
 	function _version()
 	{
@@ -158,9 +158,9 @@
 	/**
 	 * Execute the query
 	 *
-	 * @access  private called by the base class
-	 * @param   string  an SQL query
-	 * @return  resource
+	 * @access private called by the base class
+	 * @param  string an SQL query
+	 * @return resource
 	 */
 	function _execute($sql)
 	{
@@ -175,9 +175,9 @@
 	/**
 	 * Generate a statement ID
 	 *
-	 * @access  private
-	 * @param   string  an SQL query
-	 * @return  none
+	 * @access private
+	 * @param  string an SQL query
+	 * @return none
 	 */
 	function _set_stmt_id($sql)
 	{
@@ -194,9 +194,9 @@
 	 *
 	 * If needed, each database adapter can prep the query string
 	 *
-	 * @access  private called by execute()
-	 * @param   string  an SQL query
-	 * @return  string
+	 * @access private called by execute()
+	 * @param  string an SQL query
+	 * @return string
 	 */
 	function _prep_query($sql)
 	{
@@ -206,10 +206,10 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * getCursor.  Returns a cursor from the datbase
+	 * getCursor. Returns a cursor from the datbase
 	 *
-	 * @access  public
-	 * @return  cursor id
+	 * @access public
+	 * @return cursor id
 	 */
 	function get_cursor()
 	{
@@ -220,19 +220,19 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Stored Procedure.  Executes a stored procedure
+	 * Stored Procedure. Executes a stored procedure
 	 *
-	 * @access  public
-	 * @param   package	 package stored procedure is in
-	 * @param   procedure   stored procedure to execute
-	 * @param   params	  array of parameters
-	 * @return  array
+	 * @access public
+	 * @param  package	 package stored procedure is in
+	 * @param  procedure  stored procedure to execute
+	 * @param  params	 array of parameters
+	 * @return array
 	 *
 	 * params array keys
 	 *
-	 * KEY	  OPTIONAL	NOTES
+	 * KEY	 OPTIONAL	NOTES
 	 * name		no		the name of the parameter should be in :<param_name> format
-	 * value	no		the value of the parameter.  If this is an OUT or IN OUT parameter,
+	 * value	no		the value of the parameter. If this is an OUT or IN OUT parameter,
 	 *					this should be a reference to a variable
 	 * type		yes		the type of the parameter
 	 * length	yes		the max size of the parameter
@@ -275,8 +275,8 @@
 	/**
 	 * Bind parameters
 	 *
-	 * @access  private
-	 * @return  none
+	 * @access private
+	 * @return none
 	 */
 	function _bind_params($params)
 	{
@@ -386,10 +386,10 @@
 	/**
 	 * Escape String
 	 *
-	 * @access  public
-	 * @param   string
+	 * @access public
+	 * @param  string
 	 * @param	bool	whether or not the string will be used in a LIKE condition
-	 * @return  string
+	 * @return string
 	 */
 	function escape_str($str, $like = FALSE)
 	{
@@ -421,8 +421,8 @@
 	/**
 	 * Affected Rows
 	 *
-	 * @access  public
-	 * @return  integer
+	 * @access public
+	 * @return integer
 	 */
 	function affected_rows()
 	{
@@ -434,8 +434,8 @@
 	/**
 	 * Insert ID
 	 *
-	 * @access  public
-	 * @return  integer
+	 * @access public
+	 * @return integer
 	 */
 	function insert_id()
 	{
@@ -451,9 +451,9 @@
 	 * Generates a platform-specific query string that counts all records in
 	 * the specified database
 	 *
-	 * @access  public
-	 * @param   string
-	 * @return  string
+	 * @access public
+	 * @param  string
+	 * @return string
 	 */
 	function count_all($table = '')
 	{
@@ -480,9 +480,9 @@
 	 *
 	 * Generates a platform-specific query string so that the table names can be fetched
 	 *
-	 * @access  private
+	 * @access private
 	 * @param	boolean
-	 * @return  string
+	 * @return string
 	 */
 	function _list_tables($prefix_limit = FALSE)
 	{
@@ -503,9 +503,9 @@
 	 *
 	 * Generates a platform-specific query string so that the column names can be fetched
 	 *
-	 * @access  public
-	 * @param   string  the table name
-	 * @return  string
+	 * @access public
+	 * @param  string the table name
+	 * @return string
 	 */
 	function _list_columns($table = '')
 	{
@@ -519,9 +519,9 @@
 	 *
 	 * Generates a platform-specific query so that the column data can be retrieved
 	 *
-	 * @access  public
-	 * @param   string  the table name
-	 * @return  object
+	 * @access public
+	 * @param  string the table name
+	 * @return object
 	 */
 	function _field_data($table)
 	{
@@ -533,8 +533,8 @@
 	/**
 	 * The error message string
 	 *
-	 * @access  private
-	 * @return  string
+	 * @access private
+	 * @return string
 	 */
 	function _error_message()
 	{
@@ -547,8 +547,8 @@
 	/**
 	 * The error message number
 	 *
-	 * @access  private
-	 * @return  integer
+	 * @access private
+	 * @return integer
 	 */
 	function _error_number()
 	{
@@ -627,11 +627,11 @@
 	 *
 	 * Generates a platform-specific insert string from the supplied data
 	 *
-	 * @access  public
-	 * @param   string  the table name
-	 * @param   array   the insert keys
-	 * @param   array   the insert values
-	 * @return  string
+	 * @access public
+	 * @param  string the table name
+	 * @param  array  the insert keys
+	 * @param  array  the insert values
+	 * @return string
 	 */
 	function _insert($table, $keys, $values)
 	{
@@ -732,11 +732,11 @@
 	 *
 	 * Generates a platform-specific LIMIT clause
 	 *
-	 * @access  public
-	 * @param   string  the sql query string
-	 * @param   integer the number of rows to limit the query to
-	 * @param   integer the offset value
-	 * @return  string
+	 * @access public
+	 * @param  string the sql query string
+	 * @param  integer the number of rows to limit the query to
+	 * @param  integer the offset value
+	 * @return string
 	 */
 	function _limit($sql, $limit, $offset)
 	{
@@ -759,9 +759,9 @@
 	/**
 	 * Close DB Connection
 	 *
-	 * @access  public
-	 * @param   resource
-	 * @return  void
+	 * @access public
+	 * @param  resource
+	 * @return void
 	 */
 	function _close($conn_id)
 	{
diff --git a/system/database/drivers/oci8/oci8_forge.php b/system/database/drivers/oci8/oci8_forge.php
index 3cd1758..589e3c2 100644
--- a/system/database/drivers/oci8/oci8_forge.php
+++ b/system/database/drivers/oci8/oci8_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -90,7 +90,7 @@
 
 				$sql .= "\n\t".$this->db->_protect_identifiers($field);
 
-				$sql .=  ' '.$attributes['TYPE'];
+				$sql .= ' '.$attributes['TYPE'];
 
 				if (array_key_exists('CONSTRAINT', $attributes))
 				{
diff --git a/system/database/drivers/oci8/oci8_result.php b/system/database/drivers/oci8/oci8_result.php
index 88531b4..60d8396 100644
--- a/system/database/drivers/oci8/oci8_result.php
+++ b/system/database/drivers/oci8/oci8_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -6,7 +6,7 @@
  *
  * @package		CodeIgniter
  * @author		ExpressionEngine Dev Team
- * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
+ * @copyright  Copyright (c) 2008 - 2011, EllisLab, Inc.
  * @license		http://codeigniter.com/user_guide/license.html
  * @link		http://codeigniter.com
  * @since		Version 1.0
@@ -37,8 +37,8 @@
 	 * so we have to use what amounts to a hack.
 	 *
 	 *
-	 * @access  public
-	 * @return  integer
+	 * @access public
+	 * @return integer
 	 */
 	function num_rows()
 	{
@@ -58,8 +58,8 @@
 	/**
 	 * Number of fields in the result set
 	 *
-	 * @access  public
-	 * @return  integer
+	 * @access public
+	 * @return integer
 	 */
 	function num_fields()
 	{
@@ -102,8 +102,8 @@
 	 *
 	 * Generates an array of objects containing field meta-data
 	 *
-	 * @access  public
-	 * @return  array
+	 * @access public
+	 * @return array
 	 */
 	function field_data()
 	{
@@ -114,7 +114,7 @@
 			$F				= new stdClass();
 			$F->name		= ocicolumnname($this->stmt_id, $c);
 			$F->type		= ocicolumntype($this->stmt_id, $c);
-			$F->max_length  = ocicolumnsize($this->stmt_id, $c);
+			$F->max_length = ocicolumnsize($this->stmt_id, $c);
 
 			$retval[] = $F;
 		}
@@ -145,8 +145,8 @@
 	 *
 	 * Returns the result set as an array
 	 *
-	 * @access  private
-	 * @return  array
+	 * @access private
+	 * @return array
 	 */
 	function _fetch_assoc(&$row)
 	{
@@ -162,8 +162,8 @@
 	 *
 	 * Returns the result set as an object
 	 *
-	 * @access  private
-	 * @return  object
+	 * @access private
+	 * @return object
 	 */
 	function _fetch_object()
 	{
@@ -202,10 +202,10 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Query result.  "array" version.
+	 * Query result. "array" version.
 	 *
-	 * @access  public
-	 * @return  array
+	 * @access public
+	 * @return array
 	 */
 	function result_array()
 	{
@@ -230,7 +230,7 @@
 	/**
 	 * Data Seek
 	 *
-	 * Moves the internal pointer to the desired offset.  We call
+	 * Moves the internal pointer to the desired offset. We call
 	 * this internally before fetching results to make sure the
 	 * result set starts at zero
 	 *
diff --git a/system/database/drivers/oci8/oci8_utility.php b/system/database/drivers/oci8/oci8_utility.php
index 854b467..f1fe5dc 100644
--- a/system/database/drivers/oci8/oci8_utility.php
+++ b/system/database/drivers/oci8/oci8_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 81e0d7c..4268ccd 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/odbc/odbc_forge.php b/system/database/drivers/odbc/odbc_forge.php
index 3ec86b4..7e9414c 100644
--- a/system/database/drivers/odbc/odbc_forge.php
+++ b/system/database/drivers/odbc/odbc_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -102,7 +102,7 @@
 
 				$sql .= "\n\t".$this->db->_protect_identifiers($field);
 
-				$sql .=  ' '.$attributes['TYPE'];
+				$sql .= ' '.$attributes['TYPE'];
 
 				if (array_key_exists('CONSTRAINT', $attributes))
 				{
diff --git a/system/database/drivers/odbc/odbc_result.php b/system/database/drivers/odbc/odbc_result.php
index 5d64a46..d83b2e5 100644
--- a/system/database/drivers/odbc/odbc_result.php
+++ b/system/database/drivers/odbc/odbc_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -120,7 +120,7 @@
 	/**
 	 * Data Seek
 	 *
-	 * Moves the internal pointer to the desired offset.  We call
+	 * Moves the internal pointer to the desired offset. We call
 	 * this internally before fetching results to make sure the
 	 * result set starts at zero
 	 *
diff --git a/system/database/drivers/odbc/odbc_utility.php b/system/database/drivers/odbc/odbc_utility.php
index d335bed..424958b 100644
--- a/system/database/drivers/odbc/odbc_utility.php
+++ b/system/database/drivers/odbc/odbc_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 47ff362..bf985de 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/postgre/postgre_forge.php b/system/database/drivers/postgre/postgre_forge.php
index 91a1c68..fbfaac8 100644
--- a/system/database/drivers/postgre/postgre_forge.php
+++ b/system/database/drivers/postgre/postgre_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -128,14 +128,14 @@
 				}
 
 				// If this is an auto-incrementing primary key, use the serial data type instead
-				if (in_array($field, $primary_keys) && array_key_exists('AUTO_INCREMENT', $attributes) 
+				if (in_array($field, $primary_keys) && array_key_exists('AUTO_INCREMENT', $attributes)
 					&& $attributes['AUTO_INCREMENT'] === TRUE)
 				{
 					$sql .= ' SERIAL';
 				}
 				else
 				{
-					$sql .=  ' '.$attributes['TYPE'];
+					$sql .= ' '.$attributes['TYPE'];
 				}
 
 				// Modified to prevent constraints with integer data types
@@ -213,8 +213,8 @@
 	/**
 	 * Drop Table
 	 *
-	 * @access    private
-	 * @return    bool
+	 * @access  private
+	 * @return  bool
 	 */
 	function _drop_table($table)
 	{
diff --git a/system/database/drivers/postgre/postgre_result.php b/system/database/drivers/postgre/postgre_result.php
index e9a1d16..e73a258 100644
--- a/system/database/drivers/postgre/postgre_result.php
+++ b/system/database/drivers/postgre/postgre_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -120,7 +120,7 @@
 	/**
 	 * Data Seek
 	 *
-	 * Moves the internal pointer to the desired offset.  We call
+	 * Moves the internal pointer to the desired offset. We call
 	 * this internally before fetching results to make sure the
 	 * result set starts at zero
 	 *
diff --git a/system/database/drivers/postgre/postgre_utility.php b/system/database/drivers/postgre/postgre_utility.php
index 741c52e..c7690fc 100644
--- a/system/database/drivers/postgre/postgre_utility.php
+++ b/system/database/drivers/postgre/postgre_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index eb4e585..17b5f51 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/database/drivers/sqlite/sqlite_forge.php b/system/database/drivers/sqlite/sqlite_forge.php
index 5690408..c1f8099 100644
--- a/system/database/drivers/sqlite/sqlite_forge.php
+++ b/system/database/drivers/sqlite/sqlite_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -100,7 +100,7 @@
 
 				$sql .= "\n\t".$this->db->_protect_identifiers($field);
 
-				$sql .=  ' '.$attributes['TYPE'];
+				$sql .= ' '.$attributes['TYPE'];
 
 				if (array_key_exists('CONSTRAINT', $attributes))
 				{
@@ -172,7 +172,7 @@
 	/**
 	 * Drop Table
 	 *
-	 *  Unsupported feature in SQLite
+	 * Unsupported feature in SQLite
 	 *
 	 * @access	private
 	 * @return	bool
diff --git a/system/database/drivers/sqlite/sqlite_result.php b/system/database/drivers/sqlite/sqlite_result.php
index 7bd30db..6220494 100644
--- a/system/database/drivers/sqlite/sqlite_result.php
+++ b/system/database/drivers/sqlite/sqlite_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -116,7 +116,7 @@
 	/**
 	 * Data Seek
 	 *
-	 * Moves the internal pointer to the desired offset.  We call
+	 * Moves the internal pointer to the desired offset. We call
 	 * this internally before fetching results to make sure the
 	 * result set starts at zero
 	 *
diff --git a/system/database/drivers/sqlite/sqlite_utility.php b/system/database/drivers/sqlite/sqlite_utility.php
index 508023e..bd741dd 100644
--- a/system/database/drivers/sqlite/sqlite_utility.php
+++ b/system/database/drivers/sqlite/sqlite_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -28,7 +28,7 @@
 	 * List databases
 	 *
 	 * I don't believe you can do a database listing with SQLite
-	 * since each database is its own file.  I suppose we could
+	 * since each database is its own file. I suppose we could
 	 * try reading a directory looking for SQLite files, but
 	 * that doesn't seem like a terribly good idea
 	 *
diff --git a/system/helpers/array_helper.php b/system/helpers/array_helper.php
index 075a31f..daa21a3 100644
--- a/system/helpers/array_helper.php
+++ b/system/helpers/array_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -79,7 +79,7 @@
 /**
  * Elements
  *
- * Returns only the array items specified.  Will return a default value if
+ * Returns only the array items specified. Will return a default value if
  * it is not set.
  *
  * @access	public
@@ -93,12 +93,12 @@
 	function elements($items, $array, $default = FALSE)
 	{
 		$return = array();
-		
+
 		if ( ! is_array($items))
 		{
 			$items = array($items);
 		}
-		
+
 		foreach ($items as $item)
 		{
 			if (isset($array[$item]))
diff --git a/system/helpers/captcha_helper.php b/system/helpers/captcha_helper.php
index 19ec0c7..130c2c7 100644
--- a/system/helpers/captcha_helper.php
+++ b/system/helpers/captcha_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -106,8 +106,8 @@
 		// Do we have a "word" yet?
 		// -----------------------------------
 
-	   if ($word == '')
-	   {
+	  if ($word == '')
+	  {
 			$pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
 
 			$str = '';
@@ -117,7 +117,7 @@
 			}
 
 			$word = $str;
-	   }
+	  }
 
 		// -----------------------------------
 		// Determine angle and position
@@ -143,7 +143,7 @@
 		}
 
 		// -----------------------------------
-		//  Assign colors
+		// Assign colors
 		// -----------------------------------
 
 		$bg_color		= imagecolorallocate ($im, 255, 255, 255);
@@ -153,13 +153,13 @@
 		$shadow_color	= imagecolorallocate($im, 255, 240, 240);
 
 		// -----------------------------------
-		//  Create the rectangle
+		// Create the rectangle
 		// -----------------------------------
 
 		ImageFilledRectangle($im, 0, 0, $img_width, $img_height, $bg_color);
 
 		// -----------------------------------
-		//  Create the spiral pattern
+		// Create the spiral pattern
 		// -----------------------------------
 
 		$theta		= 1;
@@ -183,7 +183,7 @@
 		}
 
 		// -----------------------------------
-		//  Write the text
+		// Write the text
 		// -----------------------------------
 
 		$use_font = ($font_path != '' AND file_exists($font_path) AND function_exists('imagettftext')) ? TRUE : FALSE;
@@ -219,13 +219,13 @@
 
 
 		// -----------------------------------
-		//  Create the border
+		// Create the border
 		// -----------------------------------
 
 		imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
 
 		// -----------------------------------
-		//  Generate the image
+		// Generate the image
 		// -----------------------------------
 
 		$img_name = $now.'.jpg';
diff --git a/system/helpers/cookie_helper.php b/system/helpers/cookie_helper.php
index 7cee028..31d2d31 100644
--- a/system/helpers/cookie_helper.php
+++ b/system/helpers/cookie_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -37,7 +37,7 @@
  * @param	mixed
  * @param	string	the value of the cookie
  * @param	string	the number of seconds until expiration
- * @param	string	the cookie domain.  Usually:  .yourdomain.com
+ * @param	string	the cookie domain. Usually: .yourdomain.com
  * @param	string	the cookie path
  * @param	string	the cookie prefix
  * @return	void
@@ -85,7 +85,7 @@
  * Delete a COOKIE
  *
  * @param	mixed
- * @param	string	the cookie domain.  Usually:  .yourdomain.com
+ * @param	string	the cookie domain. Usually: .yourdomain.com
  * @param	string	the cookie path
  * @param	string	the cookie prefix
  * @return	void
diff --git a/system/helpers/date_helper.php b/system/helpers/date_helper.php
index 553e8d7..f3f01f7 100644
--- a/system/helpers/date_helper.php
+++ b/system/helpers/date_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -69,7 +69,7 @@
  * This function is identical to PHPs date() function,
  * except that it allows date codes to be formatted using
  * the MySQL style, where each code letter is preceded
- * with a percent sign:  %Y %m %d etc...
+ * with a percent sign: %Y %m %d etc...
  *
  * The benefit of doing dates this way is that you don't
  * have to worry about escaping your text letters that
@@ -366,7 +366,7 @@
 		$time = str_replace(' ', '', $time);
 
 		// YYYYMMDDHHMMSS
-		return  mktime(
+		return mktime(
 						substr($time, 8, 2),
 						substr($time, 10, 2),
 						substr($time, 12, 2),
@@ -394,7 +394,7 @@
 {
 	function unix_to_human($time = '', $seconds = FALSE, $fmt = 'us')
 	{
-		$r  = date('Y', $time).'-'.date('m', $time).'-'.date('d', $time).' ';
+		$r = date('Y', $time).'-'.date('m', $time).'-'.date('d', $time).' ';
 
 		if ($fmt == 'us')
 		{
@@ -451,18 +451,18 @@
 
 		$ex = explode("-", $split['0']);
 
-		$year  = (strlen($ex['0']) == 2) ? '20'.$ex['0'] : $ex['0'];
-		$month = (strlen($ex['1']) == 1) ? '0'.$ex['1']  : $ex['1'];
-		$day   = (strlen($ex['2']) == 1) ? '0'.$ex['2']  : $ex['2'];
+		$year = (strlen($ex['0']) == 2) ? '20'.$ex['0'] : $ex['0'];
+		$month = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1'];
+		$day  = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2'];
 
 		$ex = explode(":", $split['1']);
 
 		$hour = (strlen($ex['0']) == 1) ? '0'.$ex['0'] : $ex['0'];
-		$min  = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1'];
+		$min = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1'];
 
 		if (isset($ex['2']) && preg_match('/[0-9]{1,2}/', $ex['2']))
 		{
-			$sec  = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2'];
+			$sec = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2'];
 		}
 		else
 		{
@@ -478,7 +478,7 @@
 				$hour = $hour + 12;
 
 			if (substr($ampm, 0, 1) == 'a' AND $hour == 12)
-				$hour =  '00';
+				$hour = '00';
 
 			if (strlen($hour) == 1)
 				$hour = '0'.$hour;
@@ -537,7 +537,7 @@
 /**
  * Timezones
  *
- * Returns an array of timezones.  This is a helper function
+ * Returns an array of timezones. This is a helper function
  * for various other ones in this library
  *
  * @access	public
diff --git a/system/helpers/directory_helper.php b/system/helpers/directory_helper.php
index 38347fa..7579014 100644
--- a/system/helpers/directory_helper.php
+++ b/system/helpers/directory_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -31,7 +31,7 @@
  * Create a Directory Map
  *
  * Reads the specified directory and builds an array
- * representation of it.  Sub-folders contained with the
+ * representation of it. Sub-folders contained with the
  * directory will be mapped as well.
  *
  * @access	public
diff --git a/system/helpers/download_helper.php b/system/helpers/download_helper.php
index 1145688..e6752db 100644
--- a/system/helpers/download_helper.php
+++ b/system/helpers/download_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/email_helper.php b/system/helpers/email_helper.php
index 651aef4..8fcdad9 100644
--- a/system/helpers/email_helper.php
+++ b/system/helpers/email_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/file_helper.php b/system/helpers/file_helper.php
index 3931667..2bd8bce 100644
--- a/system/helpers/file_helper.php
+++ b/system/helpers/file_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -311,7 +311,7 @@
 					$fileinfo['readable'] = is_readable($file);
 					break;
 				case 'writable':
-					// There are known problems using is_weritable on IIS.  It may not be reliable - consider fileperms()
+					// There are known problems using is_weritable on IIS. It may not be reliable - consider fileperms()
 					$fileinfo['writable'] = is_writable($file);
 					break;
 				case 'executable':
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index 2925d3c..a6dfdb2 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -114,7 +114,7 @@
 /**
  * Hidden Input Field
  *
- * Generates hidden fields.  You can pass a simple key/value string or an associative
+ * Generates hidden fields. You can pass a simple key/value string or an associative
  * array with multiple values.
  *
  * @access	public
@@ -540,7 +540,7 @@
 /**
  * Fieldset Tag
  *
- * Used to produce <fieldset><legend>text</legend>.  To close fieldset
+ * Used to produce <fieldset><legend>text</legend>. To close fieldset
  * use form_fieldset_close()
  *
  * @access	public
@@ -663,7 +663,7 @@
  * Form Value
  *
  * Grabs a value from the POST array for the specified field so you can
- * re-populate an input field or textarea.  If Form Validation
+ * re-populate an input field or textarea. If Form Validation
  * is active it retrieves the info from the validation class
  *
  * @access	public
@@ -858,7 +858,7 @@
 /**
  * Form Error
  *
- * Returns the error for a specific form field.  This is a helper for the
+ * Returns the error for a specific form field. This is a helper for the
  * form validation class.
  *
  * @access	public
@@ -885,7 +885,7 @@
 /**
  * Validation Error String
  *
- * Returns all the errors associated with a form submission.  This is a helper
+ * Returns all the errors associated with a form submission. This is a helper
  * function for the form validation class.
  *
  * @access	public
@@ -1034,17 +1034,17 @@
 
 		// We set this as a variable since we're returning by reference.
 		$return = FALSE;
-		
+
 		if (FALSE !== ($object = $CI->load->is_loaded('form_validation')))
 		{
 			if ( ! isset($CI->$object) OR ! is_object($CI->$object))
 			{
 				return $return;
 			}
-			
+
 			return $CI->$object;
 		}
-		
+
 		return $return;
 	}
 }
diff --git a/system/helpers/html_helper.php b/system/helpers/html_helper.php
index 080f622..bd66bc2 100644
--- a/system/helpers/html_helper.php
+++ b/system/helpers/html_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -30,7 +30,7 @@
 /**
  * Heading
  *
- * Generates an HTML heading tag.  First param is the data.
+ * Generates an HTML heading tag. First param is the data.
  * Second param is the size of the heading tag.
  *
  * @access	public
@@ -114,7 +114,7 @@
 		// Set the indentation based on the depth
 		$out = str_repeat(" ", $depth);
 
-		// Were any attributes submitted?  If so generate a string
+		// Were any attributes submitted? If so generate a string
 		if (is_array($attributes))
 		{
 			$atts = '';
@@ -128,7 +128,7 @@
 		// Write the opening list tag
 		$out .= "<".$type.$attributes.">\n";
 
-		// Cycle through the list elements.  If an array is
+		// Cycle through the list elements. If an array is
 		// encountered we will recursively call _list()
 
 		static $_last_list_item = '';
@@ -244,7 +244,7 @@
  * Generates a page document type declaration
  *
  * Valid options are xhtml-11, xhtml-strict, xhtml-trans, xhtml-frame,
- * html4-strict, html4-trans, and html4-frame.  Values are saved in the
+ * html4-strict, html4-trans, and html4-frame. Values are saved in the
  * doctypes config file.
  *
  * @access	public
diff --git a/system/helpers/inflector_helper.php b/system/helpers/inflector_helper.php
index c7c113b..2352b64 100644
--- a/system/helpers/inflector_helper.php
+++ b/system/helpers/inflector_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -43,9 +43,9 @@
 	{
 		$str = trim($str);
 		$end = substr($str, -3);
-        
-        $str = preg_replace('/(.*)?([s|c]h)es/i','$1$2',$str);
-        
+
+    $str = preg_replace('/(.*)?([s|c]h)es/i','$1$2',$str);
+
 		if (strtolower($end) == 'ies')
 		{
 			$str = substr($str, 0, strlen($str)-3).(preg_match('/[a-z]/',$end) ? 'y' : 'Y');
@@ -83,8 +83,8 @@
 if ( ! function_exists('plural'))
 {
 	function plural($str, $force = FALSE)
-	{   
-        $str = trim($str);
+	{
+    $str = trim($str);
 		$end = substr($str, -1);
 
 		if (preg_match('/y/i',$end))
@@ -95,7 +95,7 @@
 		}
 		elseif (preg_match('/h/i',$end))
 		{
-            if(preg_match('/^[c|s]h$/i',substr($str, -2)))
+      if(preg_match('/^[c|s]h$/i',substr($str, -2)))
 			{
 				$str .= 'es';
 			}
diff --git a/system/helpers/language_helper.php b/system/helpers/language_helper.php
index ac0d69d..e768b45 100644
--- a/system/helpers/language_helper.php
+++ b/system/helpers/language_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/number_helper.php b/system/helpers/number_helper.php
index 6117775..fc967e8 100644
--- a/system/helpers/number_helper.php
+++ b/system/helpers/number_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/path_helper.php b/system/helpers/path_helper.php
index ffcf468..02b14e8 100644
--- a/system/helpers/path_helper.php
+++ b/system/helpers/path_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -39,7 +39,7 @@
 {
 	function set_realpath($path, $check_existance = FALSE)
 	{
-		// Security check to make sure the path is NOT a URL.  No remote file inclusion!
+		// Security check to make sure the path is NOT a URL. No remote file inclusion!
 		if (preg_match("#^(http:\/\/|https:\/\/|www\.|ftp|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#i", $path))
 		{
 			show_error('The path you submitted must be a local server path, not a URL');
diff --git a/system/helpers/security_helper.php b/system/helpers/security_helper.php
index 678dac8..a4df656 100644
--- a/system/helpers/security_helper.php
+++ b/system/helpers/security_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -119,7 +119,7 @@
 {
 	function encode_php_tags($str)
 	{
-		return str_replace(array('<?php', '<?PHP', '<?', '?>'),  array('&lt;?php', '&lt;?PHP', '&lt;?', '?&gt;'), $str);
+		return str_replace(array('<?php', '<?PHP', '<?', '?>'), array('&lt;?php', '&lt;?PHP', '&lt;?', '?&gt;'), $str);
 	}
 }
 
diff --git a/system/helpers/smiley_helper.php b/system/helpers/smiley_helper.php
index 6d88893..22ca4df 100644
--- a/system/helpers/smiley_helper.php
+++ b/system/helpers/smiley_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -30,7 +30,7 @@
 /**
  * Smiley Javascript
  *
- * Returns the javascript required for the smiley insertion.  Optionally takes
+ * Returns the javascript required for the smiley insertion. Optionally takes
  * an array of aliases to loosely couple the smiley array to the view.
  *
  * @access	public
@@ -157,7 +157,7 @@
 		foreach ($smileys as $key => $val)
 		{
 			// Keep duplicates from being used, which can happen if the
-			// mapping array contains multiple identical replacements.  For example:
+			// mapping array contains multiple identical replacements. For example:
 			// :-) and :) might be replaced with the same image so both smileys
 			// will be in the array.
 			if (isset($used[$smileys[$key][0]]))
@@ -204,7 +204,7 @@
 		}
 
 		// Add a trailing slash to the file path if needed
-		$image_url = preg_replace("/(.+?)\/*$/", "\\1/",  $image_url);
+		$image_url = preg_replace("/(.+?)\/*$/", "\\1/", $image_url);
 
 		foreach ($smileys as $key => $val)
 		{
@@ -231,13 +231,13 @@
 	{
 		if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/smileys.php'))
 		{
-		    include(APPPATH.'config/'.ENVIRONMENT.'/smileys.php');
+		  include(APPPATH.'config/'.ENVIRONMENT.'/smileys.php');
 		}
 		elseif (file_exists(APPPATH.'config/smileys.php'))
 		{
 			include(APPPATH.'config/smileys.php');
 		}
-		
+
 		if (isset($smileys) AND is_array($smileys))
 		{
 			return $smileys;
diff --git a/system/helpers/string_helper.php b/system/helpers/string_helper.php
index 7765bba..9f730bd 100644
--- a/system/helpers/string_helper.php
+++ b/system/helpers/string_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -150,7 +150,7 @@
 /**
  * Reduce Multiples
  *
- * Reduces multiple instances of a particular character.  Example:
+ * Reduces multiple instances of a particular character. Example:
  *
  * Fred, Bill,, Joe, Jimmy
  *
@@ -187,7 +187,7 @@
  * Useful for generating passwords or hashes.
  *
  * @access	public
- * @param	string	type of random string.  basic, alpha, alunum, numeric, nozero, unique, md5, encrypt and sha1
+ * @param	string	type of random string. basic, alpha, alunum, numeric, nozero, unique, md5, encrypt and sha1
  * @param	integer	number of characters
  * @return	string
  */
@@ -245,7 +245,7 @@
 /**
  * Alternator
  *
- * Allows strings to be alternated.  See docs...
+ * Allows strings to be alternated. See docs...
  *
  * @access	public
  * @param	string (as many parameters as needed)
diff --git a/system/helpers/text_helper.php b/system/helpers/text_helper.php
index 33d7fa2..7d62125 100644
--- a/system/helpers/text_helper.php
+++ b/system/helpers/text_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -63,7 +63,7 @@
 /**
  * Character Limiter
  *
- * Limits the string based on the character count.  Preserves complete words
+ * Limits the string based on the character count. Preserves complete words
  * so the character count may not be exactly as specified.
  *
  * @access	public
@@ -133,7 +133,7 @@
 				*/
 				if (count($temp) == 1)
 				{
-					$out  .= '&#'.array_shift($temp).';';
+					$out .= '&#'.array_shift($temp).';';
 					$count = 1;
 				}
 
@@ -389,7 +389,7 @@
 /**
  * Word Wrap
  *
- * Wraps text at the specified character.  Maintains the integrity of words.
+ * Wraps text at the specified character. Maintains the integrity of words.
  * Anything placed between {unwrap}{/unwrap} will not be word wrapped, nor
  * will URLs.
  *
@@ -429,7 +429,7 @@
 
 		// Use PHP's native function to do the initial wordwrap.
 		// We set the cut flag to FALSE so that any individual words that are
-		// too long get left alone.  In the next step we'll deal with them.
+		// too long get left alone. In the next step we'll deal with them.
 		$str = wordwrap($str, $charlim, "\n", FALSE);
 
 		// Split the string into individual lines of text and cycle through them
diff --git a/system/helpers/typography_helper.php b/system/helpers/typography_helper.php
index 19b4eec..0cd6673 100644
--- a/system/helpers/typography_helper.php
+++ b/system/helpers/typography_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/url_helper.php b/system/helpers/url_helper.php
index d0516ce..8e93744 100644
--- a/system/helpers/url_helper.php
+++ b/system/helpers/url_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -286,7 +286,7 @@
 			{
 				foreach ($attributes as $key => $val)
 				{
-					$x[] =  ' '.$key.'="';
+					$x[] = ' '.$key.'="';
 					for ($i = 0; $i < strlen($val); $i++)
 					{
 						$x[] = "|".ord(substr($val, $i, 1));
@@ -363,7 +363,7 @@
  *
  * Automatically links URL and Email addresses.
  * Note: There's a bit of extra code here to deal with
- * URLs or emails that end in a period.  We'll strip these
+ * URLs or emails that end in a period. We'll strip these
  * off and add them after the link.
  *
  * @access	public
diff --git a/system/helpers/xml_helper.php b/system/helpers/xml_helper.php
index cdd81ad..2219d66 100644
--- a/system/helpers/xml_helper.php
+++ b/system/helpers/xml_helper.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -46,7 +46,7 @@
 
 		if ($protect_all === TRUE)
 		{
-			$str = preg_replace("/&(\w+);/",  "$temp\\1;", $str);
+			$str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
 		}
 
 		$str = str_replace(array("&","<",">","\"", "'", "-"),
diff --git a/system/language/english/email_lang.php b/system/language/english/email_lang.php
index e3bd113..fe42768 100644
--- a/system/language/english/email_lang.php
+++ b/system/language/english/email_lang.php
@@ -5,9 +5,9 @@
 $lang['email_attachment_missing'] = "Unable to locate the following email attachment: %s";
 $lang['email_attachment_unreadable'] = "Unable to open this attachment: %s";
 $lang['email_no_recipients'] = "You must include recipients: To, Cc, or Bcc";
-$lang['email_send_failure_phpmail'] = "Unable to send email using PHP mail().  Your server might not be configured to send mail using this method.";
-$lang['email_send_failure_sendmail'] = "Unable to send email using PHP Sendmail.  Your server might not be configured to send mail using this method.";
-$lang['email_send_failure_smtp'] = "Unable to send email using PHP SMTP.  Your server might not be configured to send mail using this method.";
+$lang['email_send_failure_phpmail'] = "Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.";
+$lang['email_send_failure_sendmail'] = "Unable to send email using PHP Sendmail. Your server might not be configured to send mail using this method.";
+$lang['email_send_failure_smtp'] = "Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.";
 $lang['email_sent'] = "Your message has been successfully sent using the following protocol: %s";
 $lang['email_no_socket'] = "Unable to open a socket to Sendmail. Please check settings.";
 $lang['email_no_hostname'] = "You did not specify a SMTP hostname.";
diff --git a/system/language/english/imglib_lang.php b/system/language/english/imglib_lang.php
index 66505da..0a56fe0 100644
--- a/system/language/english/imglib_lang.php
+++ b/system/language/english/imglib_lang.php
@@ -4,20 +4,20 @@
 $lang['imglib_gd_required'] = "The GD image library is required for this feature.";
 $lang['imglib_gd_required_for_props'] = "Your server must support the GD image library in order to determine the image properties.";
 $lang['imglib_unsupported_imagecreate'] = "Your server does not support the GD function required to process this type of image.";
-$lang['imglib_gif_not_supported'] = "GIF images are often not supported due to licensing restrictions.  You may have to use JPG or PNG images instead.";
+$lang['imglib_gif_not_supported'] = "GIF images are often not supported due to licensing restrictions. You may have to use JPG or PNG images instead.";
 $lang['imglib_jpg_not_supported'] = "JPG images are not supported.";
 $lang['imglib_png_not_supported'] = "PNG images are not supported.";
 $lang['imglib_jpg_or_png_required'] = "The image resize protocol specified in your preferences only works with JPEG or PNG image types.";
-$lang['imglib_copy_error'] = "An error was encountered while attempting to replace the file.  Please make sure your file directory is writable.";
+$lang['imglib_copy_error'] = "An error was encountered while attempting to replace the file. Please make sure your file directory is writable.";
 $lang['imglib_rotate_unsupported'] = "Image rotation does not appear to be supported by your server.";
-$lang['imglib_libpath_invalid'] = "The path to your image library is not correct.  Please set the correct path in your image preferences.";
-$lang['imglib_image_process_failed'] = "Image processing failed.  Please verify that your server supports the chosen protocol and that the path to your image library is correct.";
+$lang['imglib_libpath_invalid'] = "The path to your image library is not correct. Please set the correct path in your image preferences.";
+$lang['imglib_image_process_failed'] = "Image processing failed. Please verify that your server supports the chosen protocol and that the path to your image library is correct.";
 $lang['imglib_rotation_angle_required'] = "An angle of rotation is required to rotate the image.";
 $lang['imglib_writing_failed_gif'] = "GIF image.";
 $lang['imglib_invalid_path'] = "The path to the image is not correct.";
 $lang['imglib_copy_failed'] = "The image copy routine failed.";
 $lang['imglib_missing_font'] = "Unable to find a font to use.";
-$lang['imglib_save_failed'] = "Unable to save the image.  Please make sure the image and file directory are writable.";
+$lang['imglib_save_failed'] = "Unable to save the image. Please make sure the image and file directory are writable.";
 
 
 /* End of file imglib_lang.php */
diff --git a/system/libraries/Cache/Cache.php b/system/libraries/Cache/Cache.php
index 61e7aa7..938c808 100644
--- a/system/libraries/Cache/Cache.php
+++ b/system/libraries/Cache/Cache.php
@@ -10,22 +10,22 @@
  * @license		http://codeigniter.com/user_guide/license.html
  * @link		http://codeigniter.com
  * @since		Version 2.0
- * @filesource	
+ * @filesource
  */
 
 // ------------------------------------------------------------------------
 
 /**
- * CodeIgniter Caching Class 
+ * CodeIgniter Caching Class
  *
  * @package		CodeIgniter
  * @subpackage	Libraries
  * @category	Core
  * @author		ExpressionEngine Dev Team
- * @link		
+ * @link
  */
 class CI_Cache extends CI_Driver_Library {
-	
+
 	protected $valid_drivers 	= array(
 		'cache_apc', 'cache_file', 'cache_memcached', 'cache_dummy'
 	);
@@ -33,7 +33,7 @@
 	protected $_cache_path		= NULL;		// Path of cache files (if file-based cache)
 	protected $_adapter			= 'dummy';
 	protected $_backup_driver;
-	
+
 	// ------------------------------------------------------------------------
 
 	/**
@@ -52,16 +52,16 @@
 	// ------------------------------------------------------------------------
 
 	/**
-	 * Get 
+	 * Get
 	 *
-	 * Look for a value in the cache.  If it exists, return the data 
+	 * Look for a value in the cache. If it exists, return the data
 	 * if not, return FALSE
 	 *
-	 * @param 	string	
+	 * @param 	string
 	 * @return 	mixed		value that is stored/FALSE on failure
 	 */
 	public function get($id)
-	{	
+	{
 		return $this->{$this->_adapter}->get($id);
 	}
 
@@ -112,7 +112,7 @@
 	 * Cache Info
 	 *
 	 * @param 	string		user/filehits
-	 * @return 	mixed		array on success, false on failure	
+	 * @return 	mixed		array on success, false on failure
 	 */
 	public function cache_info($type = 'user')
 	{
@@ -120,7 +120,7 @@
 	}
 
 	// ------------------------------------------------------------------------
-	
+
 	/**
 	 * Get Cache Metadata
 	 *
@@ -131,7 +131,7 @@
 	{
 		return $this->{$this->_adapter}->get_metadata($id);
 	}
-	
+
 	// ------------------------------------------------------------------------
 
 	/**
@@ -139,11 +139,11 @@
 	 *
 	 * Initialize class properties based on the configuration array.
 	 *
-	 * @param	array 	
+	 * @param	array
 	 * @return 	void
 	 */
 	private function _initialize($config)
-	{        
+	{
 		$default_config = array(
 				'adapter',
 				'memcached'
@@ -207,7 +207,7 @@
 
 		return $obj;
 	}
-	
+
 	// ------------------------------------------------------------------------
 }
 // End Class
diff --git a/system/libraries/Cache/drivers/Cache_apc.php b/system/libraries/Cache/drivers/Cache_apc.php
index de75719..ea129ed 100644
--- a/system/libraries/Cache/drivers/Cache_apc.php
+++ b/system/libraries/Cache/drivers/Cache_apc.php
@@ -10,30 +10,30 @@
  * @license		http://codeigniter.com/user_guide/license.html
  * @link		http://codeigniter.com
  * @since		Version 2.0
- * @filesource	
+ * @filesource
  */
 
 // ------------------------------------------------------------------------
 
 /**
- * CodeIgniter APC Caching Class 
+ * CodeIgniter APC Caching Class
  *
  * @package		CodeIgniter
  * @subpackage	Libraries
  * @category	Core
  * @author		ExpressionEngine Dev Team
- * @link		
+ * @link
  */
 
 class CI_Cache_apc extends CI_Driver {
 
 	/**
-	 * Get 
+	 * Get
 	 *
-	 * Look for a value in the cache.  If it exists, return the data 
+	 * Look for a value in the cache. If it exists, return the data
 	 * if not, return FALSE
 	 *
-	 * @param 	string	
+	 * @param 	string
 	 * @return 	mixed		value that is stored/FALSE on failure
 	 */
 	public function get($id)
@@ -43,8 +43,8 @@
 		return (is_array($data)) ? $data[0] : FALSE;
 	}
 
-	// ------------------------------------------------------------------------	
-	
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Cache Save
 	 *
@@ -58,7 +58,7 @@
 	{
 		return apc_store($id, array($data, time(), $ttl), $ttl);
 	}
-	
+
 	// ------------------------------------------------------------------------
 
 	/**
@@ -90,7 +90,7 @@
 	 * Cache Info
 	 *
 	 * @param 	string		user/filehits
-	 * @return 	mixed		array on success, false on failure	
+	 * @return 	mixed		array on success, false on failure
 	 */
 	 public function cache_info($type = NULL)
 	 {
@@ -137,13 +137,13 @@
 			log_message('error', 'The APC PHP extension must be loaded to use APC Cache.');
 			return FALSE;
 		}
-		
+
 		return TRUE;
 	}
 
 	// ------------------------------------------------------------------------
 
-	
+
 }
 // End Class
 
diff --git a/system/libraries/Cache/drivers/Cache_file.php b/system/libraries/Cache/drivers/Cache_file.php
index 13e2d1a..39dcd15 100644
--- a/system/libraries/Cache/drivers/Cache_file.php
+++ b/system/libraries/Cache/drivers/Cache_file.php
@@ -10,19 +10,19 @@
  * @license		http://codeigniter.com/user_guide/license.html
  * @link		http://codeigniter.com
  * @since		Version 2.0
- * @filesource	
+ * @filesource
  */
 
 // ------------------------------------------------------------------------
 
 /**
- * CodeIgniter Memcached Caching Class 
+ * CodeIgniter Memcached Caching Class
  *
  * @package		CodeIgniter
  * @subpackage	Libraries
  * @category	Core
  * @author		ExpressionEngine Dev Team
- * @link		
+ * @link
  */
 
 class CI_Cache_file extends CI_Driver {
@@ -36,9 +36,9 @@
 	{
 		$CI =& get_instance();
 		$CI->load->helper('file');
-		
+
 		$path = $CI->config->item('cache_path');
-	
+
 		$this->_cache_path = ($path == '') ? APPPATH.'cache/' : $path;
 	}
 
@@ -56,16 +56,16 @@
 		{
 			return FALSE;
 		}
-		
+
 		$data = read_file($this->_cache_path.$id);
 		$data = unserialize($data);
-		
-		if (time() >  $data['time'] + $data['ttl'])
+
+		if (time() > $data['time'] + $data['ttl'])
 		{
 			unlink($this->_cache_path.$id);
 			return FALSE;
 		}
-		
+
 		return $data['data'];
 	}
 
@@ -76,22 +76,22 @@
 	 *
 	 * @param 	string		unique key
 	 * @param 	mixed		data to store
-	 * @param 	int			length of time (in seconds) the cache is valid 
+	 * @param 	int			length of time (in seconds) the cache is valid
 	 *						- Default is 60 seconds
 	 * @return 	boolean		true on success/false on failure
 	 */
 	public function save($id, $data, $ttl = 60)
-	{		
+	{
 		$contents = array(
 				'time'		=> time(),
-				'ttl'		=> $ttl,			
+				'ttl'		=> $ttl,
 				'data'		=> $data
 			);
-		
+
 		if (write_file($this->_cache_path.$id, serialize($contents)))
 		{
 			@chmod($this->_cache_path.$id, 0777);
-			return TRUE;			
+			return TRUE;
 		}
 
 		return FALSE;
@@ -116,7 +116,7 @@
 	 * Clean the Cache
 	 *
 	 * @return 	boolean		false on failure/true on success
-	 */	
+	 */
 	public function clean()
 	{
 		return delete_files($this->_cache_path);
@@ -151,10 +151,10 @@
 		{
 			return FALSE;
 		}
-		
-		$data = read_file($this->_cache_path.$id);		
+
+		$data = read_file($this->_cache_path.$id);
 		$data = unserialize($data);
-		
+
 		if (is_array($data))
 		{
 			$data = $data['data'];
@@ -170,7 +170,7 @@
 				'mtime'		=> $mtime
 			);
 		}
-		
+
 		return FALSE;
 	}
 
@@ -180,7 +180,7 @@
 	 * Is supported
 	 *
 	 * In the file driver, check to see that the cache directory is indeed writable
-	 * 
+	 *
 	 * @return boolean
 	 */
 	public function is_supported()
diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index df0fd6e..7dcbaab 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -99,7 +99,7 @@
 	{
 		// Set and validate the supplied month/year
 		if ($year == '')
-			$year  = date("Y", $this->local_time);
+			$year = date("Y", $this->local_time);
 
 		if ($month == '')
 			$month = date("m", $this->local_time);
@@ -128,7 +128,7 @@
 		// Set the starting day number
 		$local_date = mktime(12, 0, 0, $month, 1, $year);
 		$date = getdate($local_date);
-		$day  = $start_day + 1 - $date["wday"];
+		$day = $start_day + 1 - $date["wday"];
 
 		while ($day > 1)
 		{
@@ -157,8 +157,8 @@
 		// "previous" month link
 		if ($this->show_next_prev == TRUE)
 		{
-			// Add a trailing slash to the  URL if needed
-			$this->next_prev_url = preg_replace("/(.+?)\/*$/", "\\1/",  $this->next_prev_url);
+			// Add a trailing slash to the URL if needed
+			$this->next_prev_url = preg_replace("/(.+?)\/*$/", "\\1/", $this->next_prev_url);
 
 			$adjusted_date = $this->adjust_date($month - 1, $year);
 			$out .= str_replace('{previous_url}', $this->next_prev_url.$adjusted_date['year'].'/'.$adjusted_date['month'], $this->temp['heading_previous_cell']);
@@ -233,7 +233,7 @@
 					$out .= $this->temp['cal_cell_blank'];
 				}
 
-				$out .= ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_end_today'] : $this->temp['cal_cell_end'];					
+				$out .= ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_end_today'] : $this->temp['cal_cell_end'];
 				$day++;
 			}
 
@@ -287,7 +287,7 @@
 	 * Get Day Names
 	 *
 	 * Returns an array of day names (Sunday, Monday, etc.) based
-	 * on the type.  Options: long, short, abrev
+	 * on the type. Options: long, short, abrev
 	 *
 	 * @access	public
 	 * @param	string
@@ -404,7 +404,7 @@
 	 */
 	function default_template()
 	{
-		return  array (
+		return array (
 						'table_open'				=> '<table border="0" cellpadding="4" cellspacing="0">',
 						'heading_row_start'			=> '<tr>',
 						'heading_previous_cell'		=> '<th><a href="{previous_url}">&lt;&lt;</a></th>',
@@ -451,7 +451,7 @@
 
 		$today = array('cal_cell_start_today', 'cal_cell_content_today', 'cal_cell_no_content_today', 'cal_cell_end_today');
 
-		foreach (array('table_open', 'table_close', 'heading_row_start', 'heading_previous_cell', 'heading_title_cell', 'heading_next_cell', 'heading_row_end', 'week_row_start', 'week_day_cell', 'week_row_end', 'cal_row_start', 'cal_cell_start', 'cal_cell_content', 'cal_cell_no_content',  'cal_cell_blank', 'cal_cell_end', 'cal_row_end', 'cal_cell_start_today', 'cal_cell_content_today', 'cal_cell_no_content_today', 'cal_cell_end_today') as $val)
+		foreach (array('table_open', 'table_close', 'heading_row_start', 'heading_previous_cell', 'heading_title_cell', 'heading_next_cell', 'heading_row_end', 'week_row_start', 'week_day_cell', 'week_row_end', 'cal_row_start', 'cal_cell_start', 'cal_cell_content', 'cal_cell_no_content', 'cal_cell_blank', 'cal_cell_end', 'cal_row_end', 'cal_cell_start_today', 'cal_cell_content_today', 'cal_cell_no_content_today', 'cal_cell_end_today') as $val)
 		{
 			if (preg_match("/\{".$val."\}(.*?)\{\/".$val."\}/si", $this->template, $match))
 			{
diff --git a/system/libraries/Cart.php b/system/libraries/Cart.php
index 7f65b48..fbccfb3 100644
--- a/system/libraries/Cart.php
+++ b/system/libraries/Cart.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -30,7 +30,7 @@
 	var $product_id_rules	= '\.a-z0-9_-'; // alpha-numeric, dashes, underscores, or periods
 	var $product_name_rules	= '\.\:\-_ a-z0-9'; // alpha-numeric, dashes, underscores, colons or periods
 
-	// Private variables.  Do not change!
+	// Private variables. Do not change!
 	var $CI;
 	var $_cart_contents	= array();
 
@@ -45,7 +45,7 @@
 		// Set the super object to a local variable for use later
 		$this->CI =& get_instance();
 
-		// Are any config settings being passed manually?  If so, set them
+		// Are any config settings being passed manually? If so, set them
 		$config = array();
 		if (count($params) > 0)
 		{
@@ -148,7 +148,7 @@
 
 		// --------------------------------------------------------------------
 
-		// Does the $items array contain an id, quantity, price, and name?  These are required
+		// Does the $items array contain an id, quantity, price, and name? These are required
 		if ( ! isset($items['id']) OR ! isset($items['qty']) OR ! isset($items['price']) OR ! isset($items['name']))
 		{
 			log_message('error', 'The cart array must contain a product ID, quantity, price, and name.');
@@ -157,7 +157,7 @@
 
 		// --------------------------------------------------------------------
 
-		// Prep the quantity. It can only be a number.  Duh...
+		// Prep the quantity. It can only be a number. Duh...
 		$items['qty'] = trim(preg_replace('/([^0-9])/i', '', $items['qty']));
 		// Trim any leading zeros
 		$items['qty'] = trim(preg_replace('/(^[0]+)/i', '', $items['qty']));
@@ -175,7 +175,7 @@
 		// Note: These can be user-specified by setting the $this->product_id_rules variable.
 		if ( ! preg_match("/^[".$this->product_id_rules."]+$/i", $items['id']))
 		{
-			log_message('error', 'Invalid product ID.  The product ID can only contain alpha-numeric characters, dashes, and underscores');
+			log_message('error', 'Invalid product ID. The product ID can only contain alpha-numeric characters, dashes, and underscores');
 			return FALSE;
 		}
 
@@ -191,7 +191,7 @@
 
 		// --------------------------------------------------------------------
 
-		// Prep the price.  Remove anything that isn't a number or decimal point.
+		// Prep the price. Remove anything that isn't a number or decimal point.
 		$items['price'] = trim(preg_replace('/([^0-9\.])/i', '', $items['price']));
 		// Trim any leading zeros
 		$items['price'] = trim(preg_replace('/(^[0]+)/i', '', $items['price']));
@@ -210,7 +210,7 @@
 		// Each row in the cart array, however, must have a unique index that identifies not only
 		// a particular product, but makes it possible to store identical products with different options.
 		// For example, what if someone buys two identical t-shirts (same product ID), but in
-		// different sizes?  The product ID (and other attributes, like the name) will be identical for
+		// different sizes? The product ID (and other attributes, like the name) will be identical for
 		// both sizes because it's the same shirt. The only difference will be the size.
 		// Internally, we need to treat identical submissions, but with different options, as a unique product.
 		// Our solution is to convert the options array to a string and MD5 it along with the product ID.
@@ -271,7 +271,7 @@
 		}
 
 		// You can either update a single product using a one-dimensional array,
-		// or multiple products using a multi-dimensional one.  The way we
+		// or multiple products using a multi-dimensional one. The way we
 		// determine the array type is by looking for a required array key named "id".
 		// If it's not found we assume it's a multi-dimensional array
 		$save_cart = FALSE;
@@ -344,7 +344,7 @@
 			return FALSE;
 		}
 
-		// Is the quantity zero?  If so we will remove the item from the cart.
+		// Is the quantity zero? If so we will remove the item from the cart.
 		// If the quantity is greater than zero we are updating
 		if ($items['qty'] == 0)
 		{
@@ -392,7 +392,7 @@
 		$this->_cart_contents['total_items'] = count($this->_cart_contents);
 		$this->_cart_contents['cart_total'] = $total;
 
-		// Is our cart empty?  If so we delete it from the session
+		// Is our cart empty? If so we delete it from the session
 		if (count($this->_cart_contents) <= 2)
 		{
 			$this->CI->session->unset_userdata('cart_contents');
diff --git a/system/libraries/Driver.php b/system/libraries/Driver.php
index d1925c0..b90b5ab 100644
--- a/system/libraries/Driver.php
+++ b/system/libraries/Driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index cd89f8f..3166e2f 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -31,25 +31,25 @@
 	var	$useragent		= "CodeIgniter";
 	var	$mailpath		= "/usr/sbin/sendmail";	// Sendmail path
 	var	$protocol		= "mail";	// mail/sendmail/smtp
-	var	$smtp_host		= "";		// SMTP Server.  Example: mail.earthlink.net
+	var	$smtp_host		= "";		// SMTP Server. Example: mail.earthlink.net
 	var	$smtp_user		= "";		// SMTP Username
 	var	$smtp_pass		= "";		// SMTP Password
 	var	$smtp_port		= "25";		// SMTP Port
 	var	$smtp_timeout	= 5;		// SMTP Timeout in seconds
-	var	$wordwrap		= TRUE;		// TRUE/FALSE  Turns word-wrap on/off
+	var	$wordwrap		= TRUE;		// TRUE/FALSE Turns word-wrap on/off
 	var	$wrapchars		= "76";		// Number of characters to wrap at.
-	var	$mailtype		= "text";	// text/html  Defines email formatting
+	var	$mailtype		= "text";	// text/html Defines email formatting
 	var	$charset		= "utf-8";	// Default char set: iso-8859-1 or us-ascii
 	var	$multipart		= "mixed";	// "mixed" (in the body) or "related" (separate)
 	var $alt_message	= '';		// Alternative message for HTML emails
-	var	$validate		= FALSE;	// TRUE/FALSE.  Enables email validation
+	var	$validate		= FALSE;	// TRUE/FALSE. Enables email validation
 	var	$priority		= "3";		// Default priority (1 - 5)
 	var	$newline		= "\n";		// Default newline. "\r\n" or "\n" (Use "\r\n" to comply with RFC 822)
-	var $crlf			= "\n";		// The RFC 2045 compliant CRLF for quoted-printable is "\r\n".  Apparently some servers,
+	var $crlf			= "\n";		// The RFC 2045 compliant CRLF for quoted-printable is "\r\n". Apparently some servers,
 									// even on the receiving end think they need to muck with CRLFs, so using "\n", while
 									// distasteful, is the only thing that seems to work for all environments.
-	var $send_multipart	= TRUE;		// TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override.  Set to FALSE for Yahoo.
-	var	$bcc_batch_mode	= FALSE;	// TRUE/FALSE  Turns on/off Bcc batch feature
+	var $send_multipart	= TRUE;		// TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override. Set to FALSE for Yahoo.
+	var	$bcc_batch_mode	= FALSE;	// TRUE/FALSE Turns on/off Bcc batch feature
 	var	$bcc_batch_size	= 200;		// If bcc_batch_mode = TRUE, sets max number of Bccs in each batch
 	var $_safe_mode		= FALSE;
 	var	$_subject		= "";
@@ -396,7 +396,7 @@
 	{
 		$this->_attach_name[] = $filename;
 		$this->_attach_type[] = $this->_mime_types(next(explode('.', basename($filename))));
-		$this->_attach_disp[] = $disposition; // Can also be 'inline'  Not sure if it matters
+		$this->_attach_disp[] = $disposition; // Can also be 'inline' Not sure if it matters
 		return $this;
 	}
 
@@ -600,7 +600,7 @@
 		$from = str_replace(">", "", $from);
 		$from = str_replace("<", "", $from);
 
-		return  "<".uniqid('').strstr($from, '@').">";
+		return "<".uniqid('').strstr($from, '@').">";
 	}
 
 	// --------------------------------------------------------------------
@@ -660,15 +660,15 @@
 	 */
 	private function _get_content_type()
 	{
-		if	($this->mailtype == 'html' &&  count($this->_attach_name) == 0)
+		if	($this->mailtype == 'html' && count($this->_attach_name) == 0)
 		{
 			return 'html';
 		}
-		elseif	($this->mailtype == 'html' &&  count($this->_attach_name)  > 0)
+		elseif	($this->mailtype == 'html' && count($this->_attach_name) > 0)
 		{
 			return 'html-attach';
 		}
-		elseif	($this->mailtype == 'text' &&  count($this->_attach_name)  > 0)
+		elseif	($this->mailtype == 'text' && count($this->_attach_name) > 0)
 		{
 			return 'plain-attach';
 		}
@@ -881,7 +881,7 @@
 
 		// Use PHP's native public function to do the initial wordwrap.
 		// We set the cut flag to FALSE so that any individual words that are
-		// too long get left alone.  In the next step we'll deal with them.
+		// too long get left alone. In the next step we'll deal with them.
 		$str = wordwrap($str, $charlim, "\n", FALSE);
 
 		// Split the string into individual lines of text and cycle through them
@@ -999,7 +999,7 @@
 	 */
 	private function _build_message()
 	{
-		if ($this->wordwrap === TRUE  AND  $this->mailtype != 'html')
+		if ($this->wordwrap === TRUE AND $this->mailtype != 'html')
 		{
 			$this->_body = $this->word_wrap($this->_body);
 		}
@@ -1135,7 +1135,7 @@
 				return FALSE;
 			}
 
-			$h  = "--".$this->_atc_boundary.$this->newline;
+			$h = "--".$this->_atc_boundary.$this->newline;
 			$h .= "Content-type: ".$ctype."; ";
 			$h .= "name=\"".$basename."\"".$this->newline;
 			$h .= "Content-Disposition: ".$this->_attach_disp[$i].";".$this->newline;
@@ -1237,7 +1237,7 @@
 				// encode = signs
 				if ($ascii == '61')
 				{
-					$char = $escape.strtoupper(sprintf('%02s', dechex($ascii)));  // =3D
+					$char = $escape.strtoupper(sprintf('%02s', dechex($ascii))); // =3D
 				}
 
 				// If we're at the character limit, add the line to the output,
@@ -1267,7 +1267,7 @@
 	/**
 	 * Prep Q Encoding
 	 *
-	 * Performs "Q Encoding" on a string for use in email headers.  It's related
+	 * Performs "Q Encoding" on a string for use in email headers. It's related
 	 * but not identical to quoted-printable, so it has its own method
 	 *
 	 * @access	public
@@ -1349,7 +1349,7 @@
 			$this->reply_to($this->_headers['From']);
 		}
 
-		if (( ! isset($this->_recipients) AND ! isset($this->_headers['To']))  AND
+		if (( ! isset($this->_recipients) AND ! isset($this->_headers['To'])) AND
 			( ! isset($this->_bcc_array) AND ! isset($this->_headers['Bcc'])) AND
 			( ! isset($this->_headers['Cc'])))
 		{
@@ -1359,7 +1359,7 @@
 
 		$this->_build_headers();
 
-		if ($this->bcc_batch_mode  AND  count($this->_bcc_array) > 0)
+		if ($this->bcc_batch_mode AND count($this->_bcc_array) > 0)
 		{
 			if (count($this->_bcc_array) > $this->bcc_batch_size)
 				return $this->batch_bcc_send();
@@ -1380,7 +1380,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Batch Bcc Send.  Sends groups of BCCs in batches
+	 * Batch Bcc Send. Sends groups of BCCs in batches
 	 *
 	 * @access	public
 	 * @return	bool
@@ -1752,7 +1752,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  SMTP Authenticate
+	 * SMTP Authenticate
 	 *
 	 * @access	private
 	 * @return	bool
@@ -1764,7 +1764,7 @@
 			return TRUE;
 		}
 
-		if ($this->smtp_user == ""  AND  $this->smtp_pass == "")
+		if ($this->smtp_user == "" AND $this->smtp_pass == "")
 		{
 			$this->_set_error_message('lang:email_no_smtp_unpw');
 			return FALSE;
diff --git a/system/libraries/Encrypt.php b/system/libraries/Encrypt.php
index b30a8cf..2f7db66 100644
--- a/system/libraries/Encrypt.php
+++ b/system/libraries/Encrypt.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index 6f79a55..d8bcbd6 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -102,7 +102,7 @@
 		}
 
 		// No fields? Nothing to do...
-		if ( ! is_string($field) OR  ! is_string($rules) OR $field == '')
+		if ( ! is_string($field) OR ! is_string($rules) OR $field == '')
 		{
 			return $this;
 		}
@@ -110,8 +110,8 @@
 		// If the field label wasn't passed we use the field name
 		$label = ($label == '') ? $field : $label;
 
-		// Is the field name an array?  We test for the existence of a bracket "[" in
-		// the field name to determine this.  If it is an array, we break it apart
+		// Is the field name an array? We test for the existence of a bracket "[" in
+		// the field name to determine this. If it is an array, we break it apart
 		// into its components so that we can fetch the corresponding POST data later
 		if (strpos($field, '[') !== FALSE AND preg_match_all('/\[(.*?)\]/', $field, $matches))
 		{
@@ -155,8 +155,8 @@
 	/**
 	 * Set Error Message
 	 *
-	 * Lets users set their own error messages on the fly.  Note:  The key
-	 * name has to match the  function name that it corresponds to.
+	 * Lets users set their own error messages on the fly. Note: The key
+	 * name has to match the function name that it corresponds to.
 	 *
 	 * @access	public
 	 * @param	string
@@ -281,7 +281,7 @@
 	 */
 	function run($group = '')
 	{
-		// Do we even have any data to process?  Mm?
+		// Do we even have any data to process? Mm?
 		if (count($_POST) == 0)
 		{
 			return FALSE;
@@ -291,7 +291,7 @@
 		// If not, we look to see if they were assigned via a config file
 		if (count($this->_field_data) == 0)
 		{
-			// No validation rules?  We're done...
+			// No validation rules? We're done...
 			if (count($this->_config_rules) == 0)
 			{
 				return FALSE;
@@ -648,7 +648,7 @@
 				}
 			}
 
-			// Did the rule test negatively?  If so, grab the error.
+			// Did the rule test negatively? If so, grab the error.
 			if ($result === FALSE)
 			{
 				if ( ! isset($this->_error_messages[$rule]))
@@ -664,7 +664,7 @@
 				}
 
 				// Is the parameter we are inserting into the error message the name
-				// of another field?  If so we need to grab its "field label"
+				// of another field? If so we need to grab its "field label"
 				if (isset($this->_field_data[$param]) AND isset($this->_field_data[$param]['label']))
 				{
 					$param = $this->_translate_fieldname($this->_field_data[$param]['label']);
@@ -704,7 +704,7 @@
 			// Grab the variable
 			$line = substr($fieldname, 5);
 
-			// Were we able to translate the field name?  If not we use $line
+			// Were we able to translate the field name? If not we use $line
 			if (FALSE === ($fieldname = $this->CI->lang->line($line)))
 			{
 				return $line;
@@ -735,7 +735,7 @@
 		}
 
 		// If the data is an array output them one at a time.
-		//     E.g: form_input('name[]', set_value('name[]');
+		//   E.g: form_input('name[]', set_value('name[]');
 		if (is_array($this->_field_data[$field]['postdata']))
 		{
 			return array_shift($this->_field_data[$field]['postdata']);
@@ -914,7 +914,7 @@
 			return FALSE;
 		}
 
-		return  TRUE;
+		return TRUE;
 	}
 
 	// --------------------------------------------------------------------
@@ -1207,7 +1207,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Is a Natural number  (0,1,2,3, etc.)
+	 * Is a Natural number (0,1,2,3, etc.)
 	 *
 	 * @access	public
 	 * @param	string
@@ -1221,7 +1221,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Is a Natural number, but not a zero  (1,2,3, etc.)
+	 * Is a Natural number, but not a zero (1,2,3, etc.)
 	 *
 	 * @access	public
 	 * @param	string
@@ -1354,7 +1354,7 @@
 	 */
 	function encode_php_tags($str)
 	{
-		return str_replace(array('<?php', '<?PHP', '<?', '?>'),  array('&lt;?php', '&lt;?PHP', '&lt;?', '?&gt;'), $str);
+		return str_replace(array('<?php', '<?PHP', '<?', '?>'), array('&lt;?php', '&lt;?PHP', '&lt;?', '?&gt;'), $str);
 	}
 
 }
diff --git a/system/libraries/Ftp.php b/system/libraries/Ftp.php
index d7a8b3b..859cc9c 100644
--- a/system/libraries/Ftp.php
+++ b/system/libraries/Ftp.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -158,7 +158,7 @@
 	 *
 	 * The second parameter lets us momentarily turn off debugging so that
 	 * this function can be used to test for the existence of a folder
-	 * without throwing an error.  There's no FTP equivalent to is_dir()
+	 * without throwing an error. There's no FTP equivalent to is_dir()
 	 * so we do it by trying to change to a particular directory.
 	 * Internally, this parameter is only used by the "mirror" function below.
 	 *
@@ -417,7 +417,7 @@
 		}
 
 		// Add a trailing slash to the file path if needed
-		$filepath = preg_replace("/(.+?)\/*$/", "\\1/",  $filepath);
+		$filepath = preg_replace("/(.+?)\/*$/", "\\1/", $filepath);
 
 		$list = $this->list_files($filepath);
 
@@ -513,7 +513,7 @@
 	 * Read a directory and recreate it remotely
 	 *
 	 * This function recursively reads a folder and everything it contains (including
-	 * sub-folders) and creates a mirror via FTP based on it.  Whatever the directory structure
+	 * sub-folders) and creates a mirror via FTP based on it. Whatever the directory structure
 	 * of the original file path will be recreated on the server.
 	 *
 	 * @access	public
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index 8902f52..099a238 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -26,7 +26,7 @@
  */
 class CI_Image_lib {
 
-	var $image_library		= 'gd2';	// Can be:  imagemagick, netpbm, gd, gd2
+	var $image_library		= 'gd2';	// Can be: imagemagick, netpbm, gd, gd2
 	var $library_path		= '';
 	var $dynamic_output		= FALSE;	// Whether to send to browser or write to disk
 	var $source_image		= '';
@@ -37,28 +37,28 @@
 	var $create_thumb		= FALSE;
 	var $thumb_marker		= '_thumb';
 	var $maintain_ratio		= TRUE;		// Whether to maintain aspect ratio when resizing or use hard values
-	var $master_dim			= 'auto';	// auto, height, or width.  Determines what to use as the master dimension
+	var $master_dim			= 'auto';	// auto, height, or width. Determines what to use as the master dimension
 	var $rotation_angle		= '';
 	var $x_axis				= '';
 	var	$y_axis				= '';
 
 	// Watermark Vars
 	var $wm_text			= '';			// Watermark text if graphic is not used
-	var $wm_type			= 'text';		// Type of watermarking.  Options:  text/overlay
+	var $wm_type			= 'text';		// Type of watermarking. Options: text/overlay
 	var $wm_x_transp		= 4;
 	var $wm_y_transp		= 4;
 	var $wm_overlay_path	= '';			// Watermark image path
 	var $wm_font_path		= '';			// TT font
 	var $wm_font_size		= 17;			// Font size (different versions of GD will either use points or pixels)
-	var $wm_vrt_alignment	= 'B';			// Vertical alignment:   T M B
+	var $wm_vrt_alignment	= 'B';			// Vertical alignment:  T M B
 	var $wm_hor_alignment	= 'C';			// Horizontal alignment: L R C
 	var $wm_padding			= 0;			// Padding around text
 	var $wm_hor_offset		= 0;			// Lets you push text to the right
-	var $wm_vrt_offset		= 0;			// Lets you push  text down
+	var $wm_vrt_offset		= 0;			// Lets you push text down
 	var $wm_font_color		= '#ffffff';	// Text color
 	var $wm_shadow_color	= '';			// Dropshadow color
 	var $wm_shadow_distance	= 2;			// Dropshadow distance
-	var $wm_opacity			= 50;			// Image opacity: 1 - 100  Only works with image
+	var $wm_opacity			= 50;			// Image opacity: 1 - 100 Only works with image
 
 	// Private Vars
 	var $source_folder		= '';
@@ -146,14 +146,14 @@
 		if ($this->source_image == '')
 		{
 			$this->set_error('imglib_source_image_required');
-			return FALSE;	
+			return FALSE;
 		}
 
 		/*
 		 * Is getimagesize() Available?
 		 *
 		 * We use it to determine the image properties (width/height).
-		 * Note:  We need to figure out how to determine image
+		 * Note: We need to figure out how to determine image
 		 * properties using ImageMagick and NetPBM
 		 *
 		 */
@@ -189,7 +189,7 @@
 		// Set the Image Properties
 		if ( ! $this->get_image_properties($this->source_folder.$this->source_image))
 		{
-			return FALSE;	
+			return FALSE;
 		}
 
 		/*
@@ -197,7 +197,7 @@
 		 *
 		 * If the user has set a "new_image" name it means
 		 * we are making a copy of the source image. If not
-		 * it means we are altering the original.  We'll
+		 * it means we are altering the original. We'll
 		 * set the destination filename and path accordingly.
 		 *
 		 */
@@ -267,7 +267,7 @@
 		 *
 		 * When creating thumbs or copies, the target width/height
 		 * might not be in correct proportion with the source
-		 * image's width/height.  We'll recalculate it here.
+		 * image's width/height. We'll recalculate it here.
 		 *
 		 */
 		if ($this->maintain_ratio === TRUE && ($this->width != '' AND $this->height != ''))
@@ -399,7 +399,7 @@
 		if ($this->rotation_angle == '' OR ! in_array($this->rotation_angle, $degs))
 		{
 			$this->set_error('imglib_rotation_angle_required');
-			return FALSE;	
+			return FALSE;
 		}
 
 		// Reassign the width and height
@@ -469,8 +469,8 @@
 		// Let's set up our values based on the action
 		if ($action == 'crop')
 		{
-			//  Reassign the source width/height if cropping
-			$this->orig_width  = $this->width;
+			// Reassign the source width/height if cropping
+			$this->orig_width = $this->width;
 			$this->orig_height = $this->height;
 
 			// GD 2.0 has a cropping bug so we'll test for it
@@ -487,19 +487,19 @@
 			$this->y_axis = 0;
 		}
 
-		//  Create the image handle
+		// Create the image handle
 		if ( ! ($src_img = $this->image_create_gd()))
 		{
 			return FALSE;
 		}
 
-		//  Create The Image
+		// Create The Image
 		//
-		//  old conditional which users report cause problems with shared GD libs who report themselves as "2.0 or greater"
-		//  it appears that this is no longer the issue that it was in 2004, so we've removed it, retaining it in the comment
-		//  below should that ever prove inaccurate.
+		// old conditional which users report cause problems with shared GD libs who report themselves as "2.0 or greater"
+		// it appears that this is no longer the issue that it was in 2004, so we've removed it, retaining it in the comment
+		// below should that ever prove inaccurate.
 		//
-		//  if ($this->image_library == 'gd2' AND function_exists('imagecreatetruecolor') AND $v2_override == FALSE)
+		// if ($this->image_library == 'gd2' AND function_exists('imagecreatetruecolor') AND $v2_override == FALSE)
 		if ($this->image_library == 'gd2' AND function_exists('imagecreatetruecolor'))
 		{
 			$create	= 'imagecreatetruecolor';
@@ -521,7 +521,7 @@
 
 		$copy($dst_img, $src_img, 0, 0, $this->x_axis, $this->y_axis, $this->width, $this->height, $this->orig_width, $this->orig_height);
 
-		//  Show the image
+		// Show the image
 		if ($this->dynamic_output == TRUE)
 		{
 			$this->image_display_gd($dst_img);
@@ -535,7 +535,7 @@
 			}
 		}
 
-		//  Kill the file handles
+		// Kill the file handles
 		imagedestroy($dst_img);
 		imagedestroy($src_img);
 
@@ -558,7 +558,7 @@
 	 */
 	function image_process_imagemagick($action = 'resize')
 	{
-		//  Do we have a vaild library path?
+		// Do we have a vaild library path?
 		if ($this->library_path == '')
 		{
 			$this->set_error('imglib_libpath_invalid');
@@ -593,7 +593,7 @@
 
 			$cmd .= " ".$angle." \"$this->full_src_path\" \"$this->full_dst_path\" 2>&1";
 		}
-		else  // Resize
+		else // Resize
 		{
 			$cmd .= " -resize ".$this->width."x".$this->height." \"$this->full_src_path\" \"$this->full_dst_path\" 2>&1";
 		}
@@ -634,7 +634,7 @@
 			return FALSE;
 		}
 
-		//  Build the resizing command
+		// Build the resizing command
 		switch ($this->image_type)
 		{
 			case 1 :
@@ -684,7 +684,7 @@
 
 		@exec($cmd, $output, $retval);
 
-		//  Did it work?
+		// Did it work?
 		if ($retval > 0)
 		{
 			$this->set_error('imglib_image_process_failed');
@@ -711,7 +711,7 @@
 	 */
 	function image_rotate_gd()
 	{
-		//  Create the image handle
+		// Create the image handle
 		if ( ! ($src_img = $this->image_create_gd()))
 		{
 			return FALSE;
@@ -724,10 +724,10 @@
 
 		$white	= imagecolorallocate($src_img, 255, 255, 255);
 
-		//  Rotate it!
+		// Rotate it!
 		$dst_img = imagerotate($src_img, $this->rotation_angle, $white);
 
-		//  Save the Image
+		// Save the Image
 		if ($this->dynamic_output == TRUE)
 		{
 			$this->image_display_gd($dst_img);
@@ -741,7 +741,7 @@
 			}
 		}
 
-		//  Kill the file handles
+		// Kill the file handles
 		imagedestroy($dst_img);
 		imagedestroy($src_img);
 
@@ -769,14 +769,14 @@
 			return FALSE;
 		}
 
-		$width  = $this->orig_width;
+		$width = $this->orig_width;
 		$height = $this->orig_height;
 
 		if ($this->rotation_angle == 'hor')
 		{
 			for ($i = 0; $i < $height; $i++)
 			{
-				$left  = 0;
+				$left = 0;
 				$right = $width-1;
 
 				while ($left < $right)
@@ -813,7 +813,7 @@
 			}
 		}
 
-		//  Show the image
+		// Show the image
 		if ($this->dynamic_output == TRUE)
 		{
 			$this->image_display_gd($src_img);
@@ -827,7 +827,7 @@
 			}
 		}
 
-		//  Kill the file handles
+		// Kill the file handles
 		imagedestroy($src_img);
 
 		// Set the file to 777
@@ -876,24 +876,24 @@
 			return FALSE;
 		}
 
-		//  Fetch source image properties
+		// Fetch source image properties
 		$this->get_image_properties();
 
-		//  Fetch watermark image properties
+		// Fetch watermark image properties
 		$props			= $this->get_image_properties($this->wm_overlay_path, TRUE);
 		$wm_img_type	= $props['image_type'];
 		$wm_width		= $props['width'];
 		$wm_height		= $props['height'];
 
-		//  Create two image resources
-		$wm_img  = $this->image_create_gd($this->wm_overlay_path, $wm_img_type);
+		// Create two image resources
+		$wm_img = $this->image_create_gd($this->wm_overlay_path, $wm_img_type);
 		$src_img = $this->image_create_gd($this->full_src_path);
 
 		// Reverse the offset if necessary
 		// When the image is positioned at the bottom
 		// we don't want the vertical offset to push it
-		// further down.  We want the reverse, so we'll
-		// invert the offset.  Same with the horizontal
+		// further down. We want the reverse, so we'll
+		// invert the offset. Same with the horizontal
 		// offset when the image is at the right
 
 		$this->wm_vrt_alignment = strtoupper(substr($this->wm_vrt_alignment, 0, 1));
@@ -905,11 +905,11 @@
 		if ($this->wm_hor_alignment == 'R')
 			$this->wm_hor_offset = $this->wm_hor_offset * -1;
 
-		//  Set the base x and y axis values
+		// Set the base x and y axis values
 		$x_axis = $this->wm_hor_offset + $this->wm_padding;
 		$y_axis = $this->wm_vrt_offset + $this->wm_padding;
 
-		//  Set the vertical position
+		// Set the vertical position
 		switch ($this->wm_vrt_alignment)
 		{
 			case 'T':
@@ -920,7 +920,7 @@
 				break;
 		}
 
-		//  Set the horizontal position
+		// Set the horizontal position
 		switch ($this->wm_hor_alignment)
 		{
 			case 'L':
@@ -931,7 +931,7 @@
 				break;
 		}
 
-		//  Build the finalized image
+		// Build the finalized image
 		if ($wm_img_type == 3 AND function_exists('imagealphablending'))
 		{
 			@imagealphablending($src_img, TRUE);
@@ -954,7 +954,7 @@
 			imagecopymerge($src_img, $wm_img, $x_axis, $y_axis, 0, 0, $wm_width, $wm_height, $this->wm_opacity);
 		}
 
-		//  Output the image
+		// Output the image
 		if ($this->dynamic_output == TRUE)
 		{
 			$this->image_display_gd($src_img);
@@ -994,7 +994,7 @@
 			return FALSE;
 		}
 
-		//  Fetch source image properties
+		// Fetch source image properties
 		$this->get_image_properties();
 
 		// Set RGB values for text and shadow
@@ -1015,8 +1015,8 @@
 		// Reverse the vertical offset
 		// When the image is positioned at the bottom
 		// we don't want the vertical offset to push it
-		// further down.  We want the reverse, so we'll
-		// invert the offset.  Note: The horizontal
+		// further down. We want the reverse, so we'll
+		// invert the offset. Note: The horizontal
 		// offset flips itself automatically
 
 		if ($this->wm_vrt_alignment == 'B')
@@ -1033,13 +1033,13 @@
 			if ($this->wm_font_size == '')
 				$this->wm_font_size = '17';
 
-			$fontwidth  = $this->wm_font_size-($this->wm_font_size/4);
+			$fontwidth = $this->wm_font_size-($this->wm_font_size/4);
 			$fontheight = $this->wm_font_size;
 			$this->wm_vrt_offset += $this->wm_font_size;
 		}
 		else
 		{
-			$fontwidth  = imagefontwidth($this->wm_font_size);
+			$fontwidth = imagefontwidth($this->wm_font_size);
 			$fontheight = imagefontheight($this->wm_font_size);
 		}
 
@@ -1080,11 +1080,11 @@
 			case "C":
 						if ($this->wm_use_drop_shadow)
 							$x_shad += floor(($this->orig_width - $fontwidth*strlen($this->wm_text))/2);
-							$x_axis += floor(($this->orig_width  -$fontwidth*strlen($this->wm_text))/2);
+							$x_axis += floor(($this->orig_width -$fontwidth*strlen($this->wm_text))/2);
 				break;
 		}
 
-		//  Add the text to the source image
+		// Add the text to the source image
 		if ($this->wm_use_truetype)
 		{
 			if ($this->wm_use_drop_shadow)
@@ -1098,7 +1098,7 @@
 				imagestring($src_img, $this->wm_font_size, $x_axis, $y_axis, $this->wm_text, $txt_color);
 		}
 
-		//  Output the final image
+		// Output the final image
 		if ($this->dynamic_output == TRUE)
 		{
 			$this->image_display_gd($src_img);
@@ -1366,7 +1366,7 @@
 	 * Size calculator
 	 *
 	 * This function takes a known width x height and
-	 * recalculates it to a new size.  Only one
+	 * recalculates it to a new size. Only one
 	 * new variable needs to be known
 	 *
 	 *	$props = array(
@@ -1374,7 +1374,7 @@
 	 *					'height'		=> $height,
 	 *					'new_width'		=> 40,
 	 *					'new_height'	=> ''
-	 *				  );
+	 *				 );
 	 *
 	 * @access	public
 	 * @param	array
@@ -1418,10 +1418,10 @@
 	 * Explode source_image
 	 *
 	 * This is a helper function that extracts the extension
-	 * from the source_image.  This function lets us deal with
-	 * source_images with multiple periods, like:  my.cool.jpg
+	 * from the source_image. This function lets us deal with
+	 * source_images with multiple periods, like: my.cool.jpg
 	 * It returns an associative array with two elements:
-	 * $array['ext']  = '.jpg';
+	 * $array['ext'] = '.jpg';
 	 * $array['name'] = 'my.cool';
 	 *
 	 * @access	public
diff --git a/system/libraries/Javascript.php b/system/libraries/Javascript.php
index 34e0d70..9e42a43 100644
--- a/system/libraries/Javascript.php
+++ b/system/libraries/Javascript.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -49,10 +49,10 @@
 		// make js to refer to current library
 		$this->js =& $this->CI->$js_library_driver;
 
-		log_message('debug', "Javascript Class Initialized and loaded.  Driver used: $js_library_driver");
+		log_message('debug', "Javascript Class Initialized and loaded. Driver used: $js_library_driver");
 	}
 
-	// --------------------------------------------------------------------	
+	// --------------------------------------------------------------------
 	// Event Code
 	// --------------------------------------------------------------------
 
@@ -378,7 +378,7 @@
 		return $this->js->_unload($element, $js);
 	}
 
-	// --------------------------------------------------------------------	
+	// --------------------------------------------------------------------
 	// Effects
 	// --------------------------------------------------------------------
 
@@ -685,7 +685,7 @@
 
 		return $str;
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
@@ -855,7 +855,7 @@
 		}
 		elseif (is_string($result) OR $is_key)
 		{
-			return '"'.str_replace(array('\\', "\t", "\n", "\r", '"', '/'), array('\\\\', '\\t', '\\n', "\\r", '\"', '\/'), $result).'"';			
+			return '"'.str_replace(array('\\', "\t", "\n", "\r", '"', '/'), array('\\\\', '\\t', '\\n', "\\r", '\"', '\/'), $result).'"';
 		}
 		elseif (is_scalar($result))
 		{
diff --git a/system/libraries/Log.php b/system/libraries/Log.php
index 9f1db76..2505fc6 100644
--- a/system/libraries/Log.php
+++ b/system/libraries/Log.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -30,7 +30,7 @@
 	protected $_threshold	= 1;
 	protected $_date_fmt	= 'Y-m-d H:i:s';
 	protected $_enabled	= TRUE;
-	protected $_levels	= array('ERROR' => '1', 'DEBUG' => '2',  'INFO' => '3', 'ALL' => '4');
+	protected $_levels	= array('ERROR' => '1', 'DEBUG' => '2', 'INFO' => '3', 'ALL' => '4');
 
 	/**
 	 * Constructor
@@ -84,11 +84,11 @@
 		}
 
 		$filepath = $this->_log_path.'log-'.date('Y-m-d').'.php';
-		$message  = '';
+		$message = '';
 
 		if ( ! file_exists($filepath))
 		{
-			$message .= "<"."?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); ?".">\n\n";
+			$message .= "<"."?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); ?".">\n\n";
 		}
 
 		if ( ! $fp = @fopen($filepath, FOPEN_WRITE_CREATE))
diff --git a/system/libraries/Pagination.php b/system/libraries/Pagination.php
index cc62e66..d9c22d5 100644
--- a/system/libraries/Pagination.php
+++ b/system/libraries/Pagination.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -30,10 +30,10 @@
 	var $prefix				= ''; // A custom prefix added to the path.
 	var $suffix				= ''; // A custom suffix added to the path.
 
-	var $total_rows			=  0; // Total number of items (database results)
+	var $total_rows			= 0; // Total number of items (database results)
 	var $per_page			= 10; // Max number of items you want shown per page
-	var $num_links			=  2; // Number of "digit" links to show before/after the currently viewed page
-	var $cur_page			=  0; // The current page being viewed
+	var $num_links			= 2; // Number of "digit" links to show before/after the currently viewed page
+	var $cur_page			= 0; // The current page being viewed
 	var $first_link			= '&lsaquo; First';
 	var $next_link			= '&gt;';
 	var $prev_link			= '&lt;';
@@ -177,9 +177,9 @@
 		// Calculate the start and end numbers. These determine
 		// which number to start and end the digit links with
 		$start = (($this->cur_page - $this->num_links) > 0) ? $this->cur_page - ($this->num_links - 1) : 1;
-		$end   = (($this->cur_page + $this->num_links) < $num_pages) ? $this->cur_page + $this->num_links : $num_pages;
+		$end  = (($this->cur_page + $this->num_links) < $num_pages) ? $this->cur_page + $this->num_links : $num_pages;
 
-		// Is pagination being used over GET or POST?  If get, add a per_page query
+		// Is pagination being used over GET or POST? If get, add a per_page query
 		// string. If post, add a trailing slash to the base URL if needed
 		if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
 		{
@@ -194,14 +194,14 @@
 		$output = '';
 
 		// Render the "First" link
-		if  ($this->first_link !== FALSE AND $this->cur_page > ($this->num_links + 1))
+		if ($this->first_link !== FALSE AND $this->cur_page > ($this->num_links + 1))
 		{
 			$first_url = ($this->first_url == '') ? $this->base_url : $this->first_url;
 			$output .= $this->first_tag_open.'<a '.$this->anchor_class.'href="'.$first_url.'">'.$this->first_link.'</a>'.$this->first_tag_close;
 		}
 
 		// Render the "previous" link
-		if  ($this->prev_link !== FALSE AND $this->cur_page != 1)
+		if ($this->prev_link !== FALSE AND $this->cur_page != 1)
 		{
 			$i = $uri_page_number - $this->per_page;
 
@@ -263,7 +263,7 @@
 			$output .= $this->last_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.$i.$this->suffix.'">'.$this->last_link.'</a>'.$this->last_tag_close;
 		}
 
-		// Kill double slashes.  Note: Sometimes we can end up with a double slash
+		// Kill double slashes. Note: Sometimes we can end up with a double slash
 		// in the penultimate link so we'll kill all double slashes.
 		$output = preg_replace("#([^:])//+#", "\\1/", $output);
 
diff --git a/system/libraries/Parser.php b/system/libraries/Parser.php
index d223da0..f48f2a7 100644
--- a/system/libraries/Parser.php
+++ b/system/libraries/Parser.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -31,7 +31,7 @@
 	var $object;
 
 	/**
-	 *  Parse a template
+	 * Parse a template
 	 *
 	 * Parses pseudo-variables contained in the specified template view,
 	 * replacing them with the data in the second param
@@ -53,7 +53,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Parse a String
+	 * Parse a String
 	 *
 	 * Parses pseudo-variables contained in the specified string,
 	 * replacing them with the data in the second param
@@ -72,7 +72,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Parse a template
+	 * Parse a template
 	 *
 	 * Parses pseudo-variables contained in the specified template,
 	 * replacing them with the data in the second param
@@ -114,7 +114,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Set the left/right variable delimiters
+	 * Set the left/right variable delimiters
 	 *
 	 * @access	public
 	 * @param	string
@@ -130,7 +130,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Parse a single key/value
+	 * Parse a single key/value
 	 *
 	 * @access	private
 	 * @param	string
@@ -146,9 +146,9 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Parse a tag pair
+	 * Parse a tag pair
 	 *
-	 * Parses tag pairs:  {some_tag} string... {/some_tag}
+	 * Parses tag pairs: {some_tag} string... {/some_tag}
 	 *
 	 * @access	private
 	 * @param	string
@@ -188,7 +188,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Matches a variable pair
+	 * Matches a variable pair
 	 *
 	 * @access	private
 	 * @param	string
diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php
index 082a5ee..96ab157 100644
--- a/system/libraries/Profiler.php
+++ b/system/libraries/Profiler.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -102,7 +102,7 @@
 	 *
 	 * This function cycles through the entire array of mark points and
 	 * matches any two points that are named identically (ending in "_start"
-	 * and "_end" respectively).  It then compiles the execution times for
+	 * and "_end" respectively). It then compiles the execution times for
 	 * all points and returns it as an array
 	 *
 	 * @return	array
@@ -125,9 +125,9 @@
 
 		// Build a table containing the profile data.
 		// Note: At some point we should turn this into a template that can
-		// be modified.  We also might want to make this data available to be logged
+		// be modified. We also might want to make this data available to be logged
 
-		$output  = "\n\n";
+		$output = "\n\n";
 		$output .= '<fieldset id="ci_profiler_benchmarks" style="border:1px solid #900;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
 		$output .= '<legend style="color:#900;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_benchmarks').'&nbsp;&nbsp;</legend>';
@@ -168,7 +168,7 @@
 
 		if (count($dbs) == 0)
 		{
-			$output  = "\n\n";
+			$output = "\n\n";
 			$output .= '<fieldset id="ci_profiler_queries" style="border:1px solid #0000FF;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 			$output .= "\n";
 			$output .= '<legend style="color:#0000FF;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_queries').'&nbsp;&nbsp;</legend>';
@@ -187,7 +187,7 @@
 		// Key words we want bolded
 		$highlight = array('SELECT', 'DISTINCT', 'FROM', 'WHERE', 'AND', 'LEFT&nbsp;JOIN', 'ORDER&nbsp;BY', 'GROUP&nbsp;BY', 'LIMIT', 'INSERT', 'INTO', 'VALUES', 'UPDATE', 'OR&nbsp;', 'HAVING', 'OFFSET', 'NOT&nbsp;IN', 'IN', 'LIKE', 'NOT&nbsp;LIKE', 'COUNT', 'MAX', 'MIN', 'ON', 'AS', 'AVG', 'SUM', '(', ')');
 
-		$output  = "\n\n";
+		$output = "\n\n";
 
 		$count = 0;
 
@@ -249,7 +249,7 @@
 	 */
 	protected function _compile_get()
 	{
-		$output  = "\n\n";
+		$output = "\n\n";
 		$output .= '<fieldset id="ci_profiler_get" style="border:1px solid #cd6e00;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
 		$output .= '<legend style="color:#cd6e00;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_get_data').'&nbsp;&nbsp;</legend>';
@@ -298,7 +298,7 @@
 	 */
 	protected function _compile_post()
 	{
-		$output  = "\n\n";
+		$output = "\n\n";
 		$output .= '<fieldset id="ci_profiler_post" style="border:1px solid #009900;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
 		$output .= '<legend style="color:#009900;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_post_data').'&nbsp;&nbsp;</legend>';
@@ -347,7 +347,7 @@
 	 */
 	protected function _compile_uri_string()
 	{
-		$output  = "\n\n";
+		$output = "\n\n";
 		$output .= '<fieldset id="ci_profiler_uri_string" style="border:1px solid #000;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
 		$output .= '<legend style="color:#000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_uri_string').'&nbsp;&nbsp;</legend>';
@@ -376,7 +376,7 @@
 	 */
 	protected function _compile_controller_info()
 	{
-		$output  = "\n\n";
+		$output = "\n\n";
 		$output .= '<fieldset id="ci_profiler_controller_info" style="border:1px solid #995300;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
 		$output .= '<legend style="color:#995300;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_controller_info').'&nbsp;&nbsp;</legend>';
@@ -400,7 +400,7 @@
 	 */
 	protected function _compile_memory_usage()
 	{
-		$output  = "\n\n";
+		$output = "\n\n";
 		$output .= '<fieldset id="ci_profiler_memory_usage" style="border:1px solid #5a0099;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
 		$output .= '<legend style="color:#5a0099;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_memory_usage').'&nbsp;&nbsp;</legend>';
@@ -431,7 +431,7 @@
 	 */
 	protected function _compile_http_headers()
 	{
-		$output  = "\n\n";
+		$output = "\n\n";
 		$output .= '<fieldset id="ci_profiler_http_headers" style="border:1px solid #000;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
 		$output .= '<legend style="color:#000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_headers').'&nbsp;&nbsp;(<span style="cursor: pointer;" onclick="var s=document.getElementById(\'ci_profiler_httpheaders_table\').style;s.display=s.display==\'none\'?\'\':\'none\';this.innerHTML=this.innerHTML==\''.$this->CI->lang->line('profiler_section_show').'\'?\''.$this->CI->lang->line('profiler_section_hide').'\':\''.$this->CI->lang->line('profiler_section_show').'\';">'.$this->CI->lang->line('profiler_section_show').'</span>)</legend>';
@@ -462,7 +462,7 @@
 	 */
 	protected function _compile_config()
 	{
-		$output  = "\n\n";
+		$output = "\n\n";
 		$output .= '<fieldset id="ci_profiler_config" style="border:1px solid #000;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
 		$output .= '<legend style="color:#000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_config').'&nbsp;&nbsp;(<span style="cursor: pointer;" onclick="var s=document.getElementById(\'ci_profiler_config_table\').style;s.display=s.display==\'none\'?\'\':\'none\';this.innerHTML=this.innerHTML==\''.$this->CI->lang->line('profiler_section_show').'\'?\''.$this->CI->lang->line('profiler_section_hide').'\':\''.$this->CI->lang->line('profiler_section_show').'\';">'.$this->CI->lang->line('profiler_section_show').'</span>)</legend>';
diff --git a/system/libraries/Session.php b/system/libraries/Session.php
index 2c8a801..76525db 100644
--- a/system/libraries/Session.php
+++ b/system/libraries/Session.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -81,14 +81,14 @@
 			$this->CI->load->library('encrypt');
 		}
 
-		// Are we using a database?  If so, load it
+		// Are we using a database? If so, load it
 		if ($this->sess_use_database === TRUE AND $this->sess_table_name != '')
 		{
 			$this->CI->load->database();
 		}
 
-		// Set the "now" time.  Can either be GMT or server time, based on the
-		// config prefs.  We use this to set the "last activity" time
+		// Set the "now" time. Can either be GMT or server time, based on the
+		// config prefs. We use this to set the "last activity" time
 		$this->now = $this->_get_time();
 
 		// Set the session length. If the session expiration is
@@ -97,12 +97,12 @@
 		{
 			$this->sess_expiration = (60*60*24*365*2);
 		}
-		
+
 		// Set the cookie name
 		$this->sess_cookie_name = $this->cookie_prefix.$this->sess_cookie_name;
 
 		// Run the Session routine. If a session doesn't exist we'll
-		// create a new one.  If it does, we'll update it.
+		// create a new one. If it does, we'll update it.
 		if ( ! $this->sess_read())
 		{
 			$this->sess_create();
@@ -137,7 +137,7 @@
 		// Fetch the cookie
 		$session = $this->CI->input->cookie($this->sess_cookie_name);
 
-		// No cookie?  Goodbye cruel world!...
+		// No cookie? Goodbye cruel world!...
 		if ($session === FALSE)
 		{
 			log_message('debug', 'A session cookie was not found.');
@@ -155,8 +155,8 @@
 			$hash	 = substr($session, strlen($session)-32); // get last 32 chars
 			$session = substr($session, 0, strlen($session)-32);
 
-			// Does the md5 hash match?  This is to prevent manipulation of session data in userspace
-			if ($hash !==  md5($session.$this->encryption_key))
+			// Does the md5 hash match? This is to prevent manipulation of session data in userspace
+			if ($hash !== md5($session.$this->encryption_key))
 			{
 				log_message('error', 'The session cookie data did not match what was expected. This could be a possible hacking attempt.');
 				$this->sess_destroy();
@@ -212,14 +212,14 @@
 
 			$query = $this->CI->db->get($this->sess_table_name);
 
-			// No result?  Kill it!
+			// No result? Kill it!
 			if ($query->num_rows() == 0)
 			{
 				$this->sess_destroy();
 				return FALSE;
 			}
 
-			// Is there custom data?  If so, add it to the main session array
+			// Is there custom data? If so, add it to the main session array
 			$row = $query->row();
 			if (isset($row->user_data) AND $row->user_data != '')
 			{
@@ -252,7 +252,7 @@
 	 */
 	function sess_write()
 	{
-		// Are we saving custom data to the DB?  If not, all we do is update the cookie
+		// Are we saving custom data to the DB? If not, all we do is update the cookie
 		if ($this->sess_use_database === FALSE)
 		{
 			$this->_set_cookie();
@@ -272,7 +272,7 @@
 			$cookie_userdata[$val] = $this->userdata[$val];
 		}
 
-		// Did we find any custom data?  If not, we turn the empty array into a string
+		// Did we find any custom data? If not, we turn the empty array into a string
 		// since there's no reason to serialize and store an empty array in the DB
 		if (count($custom_userdata) === 0)
 		{
@@ -288,7 +288,7 @@
 		$this->CI->db->where('session_id', $this->userdata['session_id']);
 		$this->CI->db->update($this->sess_table_name, array('last_activity' => $this->userdata['last_activity'], 'user_data' => $custom_userdata));
 
-		// Write the cookie.  Notice that we manually pass the cookie data array to the
+		// Write the cookie. Notice that we manually pass the cookie data array to the
 		// _set_cookie() function. Normally that function will store $this->userdata, but
 		// in this case that array contains custom data, which we do not want in the cookie.
 		$this->_set_cookie($cookie_userdata);
@@ -535,7 +535,7 @@
 	 */
 	function keep_flashdata($key)
 	{
-		// 'old' flashdata gets removed.  Here we mark all
+		// 'old' flashdata gets removed. Here we mark all
 		// flashdata as 'new' to preserve it from _flashdata_sweep()
 		// Note the function will return FALSE if the $key
 		// provided cannot be found
diff --git a/system/libraries/Sha1.php b/system/libraries/Sha1.php
index 1a65757..04e07d1 100644
--- a/system/libraries/Sha1.php
+++ b/system/libraries/Sha1.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -74,10 +74,10 @@
 
 		$x[$n * 16 - 1] = strlen($str) * 8;
 
-		$a =  1732584193;
+		$a = 1732584193;
 		$b = -271733879;
 		$c = -1732584194;
-		$d =  271733878;
+		$d = 271733878;
 		$e = -1009589776;
 
 		for ($i = 0; $i < count($x); $i += 16)
@@ -142,7 +142,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Return result based on iteration
+	 * Return result based on iteration
 	 *
 	 * @access	private
 	 * @return	string
diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index def6967..764df37 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -81,9 +81,9 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Set columns.  Takes a one-dimensional array as input and creates
+	 * Set columns. Takes a one-dimensional array as input and creates
 	 * a multi-dimensional array with a depth equal to the number of
-	 * columns.  This allows a single array with many elements to  be
+	 * columns. This allows a single array with many elements to be
 	 * displayed in a table that has a fixed column count.
 	 *
 	 * @access	public
@@ -247,7 +247,7 @@
 			}
 		}
 
-		// Is there anything to display?  No?  Smite them!
+		// Is there anything to display? No? Smite them!
 		if (count($this->heading) == 0 AND count($this->rows) == 0)
 		{
 			return 'Undefined table data';
@@ -376,7 +376,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Clears the table arrays.  Useful if multiple tables are being generated
+	 * Clears the table arrays. Useful if multiple tables are being generated
 	 *
 	 * @access	public
 	 * @return	void
@@ -495,7 +495,7 @@
 	 */
 	function _default_template()
 	{
-		return  array (
+		return array (
 						'table_open'			=> '<table border="0" cellpadding="4" cellspacing="0">',
 
 						'thead_open'			=> '<thead>',
diff --git a/system/libraries/Trackback.php b/system/libraries/Trackback.php
index b0a7678..b0f8a90 100644
--- a/system/libraries/Trackback.php
+++ b/system/libraries/Trackback.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -125,7 +125,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Receive Trackback  Data
+	 * Receive Trackback Data
 	 *
 	 * This function simply validates the incoming TB data.
 	 * It returns FALSE on failure and TRUE on success.
@@ -170,7 +170,7 @@
 	/**
 	 * Send Trackback Error Message
 	 *
-	 * Allows custom errors to be set.  By default it
+	 * Allows custom errors to be set. By default it
 	 * sends the "incomplete information" error, as that's
 	 * the most common one.
 	 *
@@ -221,7 +221,7 @@
 	 * Process Trackback
 	 *
 	 * Opens a socket connection and passes the data to
-	 * the server.  Returns TRUE on success, FALSE on failure
+	 * the server. Returns TRUE on success, FALSE on failure
 	 *
 	 * @access	public
 	 * @param	string
@@ -359,11 +359,11 @@
 		if (strpos($url, '?') !== FALSE)
 		{
 			$tb_array = explode('/', $url);
-			$tb_end   = $tb_array[count($tb_array)-1];
+			$tb_end  = $tb_array[count($tb_array)-1];
 
 			if ( ! is_numeric($tb_end))
 			{
-				$tb_end  = $tb_array[count($tb_array)-2];
+				$tb_end = $tb_array[count($tb_array)-2];
 			}
 
 			$tb_array = explode('=', $tb_end);
@@ -378,7 +378,7 @@
 
 			if ( ! is_numeric($tb_id))
 			{
-				$tb_id  = $tb_array[count($tb_array)-2];
+				$tb_id = $tb_array[count($tb_array)-2];
 			}
 		}
 
@@ -406,7 +406,7 @@
 		$temp = '__TEMP_AMPERSANDS__';
 
 		$str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);
-		$str = preg_replace("/&(\w+);/",  "$temp\\1;", $str);
+		$str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
 
 		$str = str_replace(array("&","<",">","\"", "'", "-"),
 							array("&amp;", "&lt;", "&gt;", "&quot;", "&#39;", "&#45;"),
diff --git a/system/libraries/Typography.php b/system/libraries/Typography.php
index 734cec1..3ceb0b5 100644
--- a/system/libraries/Typography.php
+++ b/system/libraries/Typography.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -53,7 +53,7 @@
 	 *	- Converts single and double quotes into correctly facing curly quote entities.
 	 *	- Converts three dots into ellipsis.
 	 *	- Converts double dashes into em-dashes.
-	 *  - Converts two spaces into entities
+	 * - Converts two spaces into entities
 	 *
 	 * @access	public
 	 * @param	string
@@ -73,7 +73,7 @@
 			$str = str_replace(array("\r\n", "\r"), "\n", $str);
 		}
 
-		// Reduce line breaks.  If there are more than two consecutive linebreaks
+		// Reduce line breaks. If there are more than two consecutive linebreaks
 		// we'll compress them down to a maximum of two since there's no benefit to more.
 		if ($reduce_linebreaks === TRUE)
 		{
@@ -94,7 +94,7 @@
 			}
 		}
 
-		// match and yank <pre> tags if they exist.  It's cheaper to do this separately since most content will
+		// match and yank <pre> tags if they exist. It's cheaper to do this separately since most content will
 		// not contain <pre> tags, and it keeps the PCRE patterns below simpler and faster
 		if (strpos($str, '<pre') !== FALSE)
 		{
@@ -110,12 +110,12 @@
 			$str = preg_replace_callback("#\{.+?\}#si", array($this, '_protect_characters'), $str);
 		}
 
-		// Convert "ignore" tags to temporary marker.  The parser splits out the string at every tag
-		// it encounters.  Certain inline tags, like image tags, links, span tags, etc. will be
+		// Convert "ignore" tags to temporary marker. The parser splits out the string at every tag
+		// it encounters. Certain inline tags, like image tags, links, span tags, etc. will be
 		// adversely affected if they are split out so we'll convert the opening bracket < temporarily to: {@TAG}
 		$str = preg_replace("#<(/*)(".$this->inline_elements.")([ >])#i", "{@TAG}\\1\\2\\3", $str);
 
-		// Split the string at every tag.  This expression creates an array with this prototype:
+		// Split the string at every tag. This expression creates an array with this prototype:
 		//
 		//	[array]
 		//	{
@@ -126,7 +126,7 @@
 		//	}
 		$chunks = preg_split('/(<(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+>)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
 
-		// Build our finalized string.  We cycle through the array, skipping tags, and processing the contained text
+		// Build our finalized string. We cycle through the array, skipping tags, and processing the contained text
 		$str = '';
 		$process = TRUE;
 		$paragraph = FALSE;
@@ -143,7 +143,7 @@
 			{
 				if (preg_match("#".$this->skip_elements."#", $match[2]))
 				{
-					$process =  ($match[1] == '/') ? TRUE : FALSE;
+					$process = ($match[1] == '/') ? TRUE : FALSE;
 				}
 
 				if ($match[1] == '')
@@ -161,17 +161,17 @@
 				continue;
 			}
 
-			//  Force a newline to make sure end tags get processed by _format_newlines()
+			// Force a newline to make sure end tags get processed by _format_newlines()
 			if ($current_chunk == $total_chunks)
 			{
 				$chunk .= "\n";
 			}
 
-			//  Convert Newlines into <p> and <br /> tags
+			// Convert Newlines into <p> and <br /> tags
 			$str .= $this->_format_newlines($chunk);
 		}
 
-		// No opening block level tag?  Add it if needed.
+		// No opening block level tag? Add it if needed.
 		if ( ! preg_match("/^\s*<(?:".$this->block_elements.")/i", $str))
 		{
 			$str = preg_replace("/^(.*?)<(".$this->block_elements.")/i", '<p>$1</p><$2', $str);
@@ -204,14 +204,14 @@
 						'#<p></p><('.$this->block_elements.')#'	=> '<$1',
 
 						// Clean up stray non-breaking spaces preceeding block elements
-						'#(&nbsp;\s*)+<('.$this->block_elements.')#'	=> '  <$2',
+						'#(&nbsp;\s*)+<('.$this->block_elements.')#'	=> ' <$2',
 
 						// Replace the temporary markers we added earlier
 						'/\{@TAG\}/'		=> '<',
 						'/\{@DQ\}/'			=> '"',
 						'/\{@SQ\}/'			=> "'",
 						'/\{@DD\}/'			=> '--',
-						'/\{@NBS\}/'		=> '  ',
+						'/\{@NBS\}/'		=> ' ',
 
 						// An unintended consequence of the _format_newlines function is that
 						// some of the newlines get truncated, resulting in <p> tags
@@ -296,7 +296,7 @@
 							'/(\w)\.{3}/'					=> '$1&#8230;',
 
 							// double space after sentences
-							'/(\W)  /'						=> '$1&nbsp; ',
+							'/(\W) /'						=> '$1&nbsp; ',
 
 							// ampersands, if not a character entity
 							'/&(?!#?[a-zA-Z0-9]{2,};)/'		=> '&amp;'
@@ -324,7 +324,7 @@
 			return $str;
 		}
 
-		if (strpos($str, "\n") === FALSE  && ! in_array($this->last_block_element, $this->inner_block_required))
+		if (strpos($str, "\n") === FALSE && ! in_array($this->last_block_element, $this->inner_block_required))
 		{
 			return $str;
 		}
@@ -341,7 +341,7 @@
 			// We trim off the right-side new line so that the closing </p> tag
 			// will be positioned immediately following the string, matching
 			// the behavior of the opening <p> tag
-			$str =  '<p>'.rtrim($str).'</p>';
+			$str = '<p>'.rtrim($str).'</p>';
 		}
 
 		// Remove empty paragraphs if they are on the first line, as this
@@ -367,7 +367,7 @@
 	 */
 	function _protect_characters($match)
 	{
-		return str_replace(array("'",'"','--','  '), array('{@SQ}', '{@DQ}', '{@DD}', '{@NBS}'), $match[0]);
+		return str_replace(array("'",'"','--',' '), array('{@SQ}', '{@DQ}', '{@DD}', '{@NBS}'), $match[0]);
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/libraries/Unit_test.php b/system/libraries/Unit_test.php
index 5bd7e80..c9012f6 100644
--- a/system/libraries/Unit_test.php
+++ b/system/libraries/Unit_test.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index 3177424..51fbf77 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -185,7 +185,7 @@
 				case 8: // UPLOAD_ERR_EXTENSION
 					$this->set_error('upload_stopped_by_extension');
 					break;
-				default :   $this->set_error('upload_no_file_selected');
+				default :  $this->set_error('upload_no_file_selected');
 					break;
 			}
 
@@ -290,7 +290,7 @@
 		/*
 		 * Run the file through the XSS hacking filter
 		 * This helps prevent malicious code from being
-		 * embedded within a file.  Scripts can easily
+		 * embedded within a file. Scripts can easily
 		 * be disguised as images or other file types.
 		 */
 		if ($this->xss_clean)
@@ -305,8 +305,8 @@
 		/*
 		 * Move the file to the final destination
 		 * To deal with different server configurations
-		 * we'll attempt to use copy() first.  If that fails
-		 * we'll use move_uploaded_file().  One of the two should
+		 * we'll attempt to use copy() first. If that fails
+		 * we'll use move_uploaded_file(). One of the two should
 		 * reliably work in most environments
 		 */
 		if ( ! @copy($this->file_temp, $this->upload_path.$this->file_name))
@@ -321,7 +321,7 @@
 		/*
 		 * Set the finalized image dimensions
 		 * This sets the image width/height (assuming the
-		 * file was an image).  We use this information
+		 * file was an image). We use this information
 		 * in the "data" function.
 		 */
 		$this->set_image_properties($this->upload_path.$this->file_name);
@@ -518,7 +518,7 @@
 				$this->image_width		= $D['0'];
 				$this->image_height		= $D['1'];
 				$this->image_type		= ( ! isset($types[$D['2']])) ? 'unknown' : $types[$D['2']];
-				$this->image_size_str	= $D['3'];  // string containing height and width
+				$this->image_size_str	= $D['3']; // string containing height and width
 			}
 		}
 	}
@@ -551,7 +551,7 @@
 		// IE will sometimes return odd mime-types during upload, so here we just standardize all
 		// jpegs or pngs to the same file type.
 
-		$png_mimes  = array('image/x-png');
+		$png_mimes = array('image/x-png');
 		$jpeg_mimes = array('image/jpg', 'image/jpe', 'image/jpeg', 'image/pjpeg');
 
 		if (in_array($this->file_type, $png_mimes))
@@ -642,7 +642,7 @@
 	 */
 	public function is_allowed_filesize()
 	{
-		if ($this->max_size != 0  AND  $this->file_size > $this->max_size)
+		if ($this->max_size != 0 AND $this->file_size > $this->max_size)
 		{
 			return FALSE;
 		}
@@ -721,7 +721,7 @@
 			return FALSE;
 		}
 
-		$this->upload_path = preg_replace("/(.+?)\/*$/", "\\1/",  $this->upload_path);
+		$this->upload_path = preg_replace("/(.+?)\/*$/", "\\1/", $this->upload_path);
 		return TRUE;
 	}
 
@@ -834,7 +834,7 @@
 			$current = ini_get('memory_limit') * 1024 * 1024;
 
 			// There was a bug/behavioural change in PHP 5.2, where numbers over one million get output
-			// into scientific notation.  number_format() ensures this number is an integer
+			// into scientific notation. number_format() ensures this number is an integer
 			// http://bugs.php.net/bug.php?id=43053
 
 			$new_memory = number_format(ceil(filesize($file) + $current), 0, '.', '');
@@ -844,8 +844,8 @@
 
 		// If the file being uploaded is an image, then we should have no problem with XSS attacks (in theory), but
 		// IE can be fooled into mime-type detecting a malformed image as an html file, thus executing an XSS attack on anyone
-		// using IE who looks at the image.  It does this by inspecting the first 255 bytes of an image.  To get around this
-		// CI will itself look at the first 255 bytes of an image to determine its relative safety.  This can save a lot of
+		// using IE who looks at the image. It does this by inspecting the first 255 bytes of an image. To get around this
+		// CI will itself look at the first 255 bytes of an image to determine its relative safety. This can save a lot of
 		// processor power and time if it is actually a clean image, as it will be in nearly all instances _except_ an
 		// attempted XSS attack.
 
@@ -933,7 +933,7 @@
 	/**
 	 * List of Mime Types
 	 *
-	 * This is a list of mime types.  We use it to validate
+	 * This is a list of mime types. We use it to validate
 	 * the "allowed types" set by the developer
 	 *
 	 * @param	string
diff --git a/system/libraries/User_agent.php b/system/libraries/User_agent.php
index 016102a..543d1d5 100644
--- a/system/libraries/User_agent.php
+++ b/system/libraries/User_agent.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/libraries/Xmlrpc.php b/system/libraries/Xmlrpc.php
index 5da6ea6..aba6091 100644
--- a/system/libraries/Xmlrpc.php
+++ b/system/libraries/Xmlrpc.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -46,7 +46,7 @@
 	var $xmlrpcTypes	= array();
 	var $valid_parents	= array();
 	var $xmlrpcerr		= array();	// Response numbers
-	var $xmlrpcstr		= array();  // Response strings
+	var $xmlrpcstr		= array(); // Response strings
 
 	var $xmlrpc_defencoding = 'UTF-8';
 	var $xmlrpcName			= 'XML-RPC for CodeIgniter';
@@ -61,12 +61,12 @@
 	var $message			= '';
 	var $error				= '';		// Error string for request
 	var $result;
-	var $response			= array();  // Response from remote server
+	var $response			= array(); // Response from remote server
 
 	var $xss_clean			= TRUE;
 
 	//-------------------------------------
-	//  VALUES THAT MULTIPLE CLASSES NEED
+	// VALUES THAT MULTIPLE CLASSES NEED
 	//-------------------------------------
 
 	public function __construct($config = array())
@@ -112,7 +112,7 @@
 		$this->xmlrpcerr['unknown_method'] = '1';
 		$this->xmlrpcstr['unknown_method'] = 'This is not a known method for this XML-RPC Server';
 		$this->xmlrpcerr['invalid_return'] = '2';
-		$this->xmlrpcstr['invalid_return'] = 'The XML data received was either invalid or not in the correct form for XML-RPC.  Turn on debugging to examine the XML data further.';
+		$this->xmlrpcstr['invalid_return'] = 'The XML data received was either invalid or not in the correct form for XML-RPC. Turn on debugging to examine the XML data further.';
 		$this->xmlrpcerr['incorrect_params'] = '3';
 		$this->xmlrpcstr['incorrect_params'] = 'Incorrect parameters were passed to method';
 		$this->xmlrpcerr['introspect_unknown'] = '4';
@@ -129,7 +129,7 @@
 
 
 	//-------------------------------------
-	//  Initialize Prefs
+	// Initialize Prefs
 	//-------------------------------------
 
 	function initialize($config = array())
@@ -148,7 +148,7 @@
 	// END
 
 	//-------------------------------------
-	//  Take URL and parse it
+	// Take URL and parse it
 	//-------------------------------------
 
 	function server($url, $port=80)
@@ -172,7 +172,7 @@
 	// END
 
 	//-------------------------------------
-	//  Set Timeout
+	// Set Timeout
 	//-------------------------------------
 
 	function timeout($seconds=5)
@@ -185,7 +185,7 @@
 	// END
 
 	//-------------------------------------
-	//  Set Methods
+	// Set Methods
 	//-------------------------------------
 
 	function method($function)
@@ -195,7 +195,7 @@
 	// END
 
 	//-------------------------------------
-	//  Take Array of Data and Create Objects
+	// Take Array of Data and Create Objects
 	//-------------------------------------
 
 	function request($incoming)
@@ -216,7 +216,7 @@
 
 
 	//-------------------------------------
-	//  Set Debug
+	// Set Debug
 	//-------------------------------------
 
 	function set_debug($flag = TRUE)
@@ -225,7 +225,7 @@
 	}
 
 	//-------------------------------------
-	//  Values Parsing
+	// Values Parsing
 	//-------------------------------------
 
 	function values_parsing($value, $return = FALSE)
@@ -268,7 +268,7 @@
 
 
 	//-------------------------------------
-	//  Sends XML-RPC Request
+	// Sends XML-RPC Request
 	//-------------------------------------
 
 	function send_request()
@@ -294,7 +294,7 @@
 	// END
 
 	//-------------------------------------
-	//  Returns Error
+	// Returns Error
 	//-------------------------------------
 
 	function display_error()
@@ -304,7 +304,7 @@
 	// END
 
 	//-------------------------------------
-	//  Returns Remote Server Response
+	// Returns Remote Server Response
 	//-------------------------------------
 
 	function display_response()
@@ -314,7 +314,7 @@
 	// END
 
 	//-------------------------------------
-	//  Sends an Error Message for Server Request
+	// Sends an Error Message for Server Request
 	//-------------------------------------
 
 	function send_error_message($number, $message)
@@ -325,7 +325,7 @@
 
 
 	//-------------------------------------
-	//  Send Response for Server Request
+	// Send Response for Server Request
 	//-------------------------------------
 
 	function send_response($response)
@@ -399,7 +399,7 @@
 		}
 
 		$r = "\r\n";
-		$op  = "POST {$this->path} HTTP/1.0$r";
+		$op = "POST {$this->path} HTTP/1.0$r";
 		$op .= "Host: {$this->server}$r";
 		$op .= "Content-Type: text/xml$r";
 		$op .= "User-Agent: {$this->xmlrpcName}$r";
@@ -447,7 +447,7 @@
 		else if ( ! is_object($val))
 		{
 			// programmer error, not an object
-			error_log("Invalid type '" . gettype($val) . "' (value: $val) passed to XML_RPC_Response.  Defaulting to empty value.");
+			error_log("Invalid type '" . gettype($val) . "' (value: $val) passed to XML_RPC_Response. Defaulting to empty value.");
 			$this->val = new XML_RPC_Values();
 		}
 		else
@@ -504,7 +504,7 @@
 	function decode($array=FALSE)
 	{
 		$CI =& get_instance();
-		
+
 		if ($array !== FALSE && is_array($array))
 		{
 			while (list($key) = each($array))
@@ -541,7 +541,7 @@
 
 
 	//-------------------------------------
-	//  XML-RPC Object to PHP Types
+	// XML-RPC Object to PHP Types
 	//-------------------------------------
 
 	function xmlrpc_decoder($xmlrpc_val)
@@ -581,7 +581,7 @@
 
 
 	//-------------------------------------
-	//  ISO-8601 time to server or UTC time
+	// ISO-8601 time to server or UTC time
 	//-------------------------------------
 
 	function iso8601_decode($time, $utc=0)
@@ -630,7 +630,7 @@
 	}
 
 	//-------------------------------------
-	//  Create Payload to Send
+	// Create Payload to Send
 	//-------------------------------------
 
 	function createPayload()
@@ -650,7 +650,7 @@
 	}
 
 	//-------------------------------------
-	//  Parse External XML-RPC Server's Response
+	// Parse External XML-RPC Server's Response
 	//-------------------------------------
 
 	function parseResponse($fp)
@@ -663,7 +663,7 @@
 		}
 
 		//-------------------------------------
-		//  DISPLAY HTTP CONTENT for DEBUGGING
+		// DISPLAY HTTP CONTENT for DEBUGGING
 		//-------------------------------------
 
 		if ($this->debug === TRUE)
@@ -674,7 +674,7 @@
 		}
 
 		//-------------------------------------
-		//  Check for data
+		// Check for data
 		//-------------------------------------
 
 		if ($data == "")
@@ -686,7 +686,7 @@
 
 
 		//-------------------------------------
-		//  Check for HTTP 200 Response
+		// Check for HTTP 200 Response
 		//-------------------------------------
 
 		if (strncmp($data, 'HTTP', 4) == 0 && ! preg_match('/^HTTP\/[0-9\.]+ 200 /', $data))
@@ -697,7 +697,7 @@
 		}
 
 		//-------------------------------------
-		//  Create and Set Up XML Parser
+		// Create and Set Up XML Parser
 		//-------------------------------------
 
 		$parser = xml_parser_create($this->xmlrpc_defencoding);
@@ -718,7 +718,7 @@
 
 
 		//-------------------------------------
-		//  GET HEADERS
+		// GET HEADERS
 		//-------------------------------------
 
 		$lines = explode("\r\n", $data);
@@ -734,7 +734,7 @@
 
 
 		//-------------------------------------
-		//  PARSE XML DATA
+		// PARSE XML DATA
 		//-------------------------------------
 
 		if ( ! xml_parse($parser, $data, count($data)))
@@ -750,7 +750,7 @@
 		xml_parser_free($parser);
 
 		// ---------------------------------------
-		//  Got Ourselves Some Badness, It Seems
+		// Got Ourselves Some Badness, It Seems
 		// ---------------------------------------
 
 		if ($this->xh[$parser]['isf'] > 1)
@@ -772,7 +772,7 @@
 		}
 
 		//-------------------------------------
-		//  DISPLAY XML CONTENT for DEBUGGING
+		// DISPLAY XML CONTENT for DEBUGGING
 		//-------------------------------------
 
 		if ($this->debug === TRUE)
@@ -797,7 +797,7 @@
 		}
 
 		//-------------------------------------
-		//  SEND RESPONSE
+		// SEND RESPONSE
 		//-------------------------------------
 
 		$v = $this->xh[$parser]['value'];
@@ -826,21 +826,21 @@
 	}
 
 	// ------------------------------------
-	//  Begin Return Message Parsing section
+	// Begin Return Message Parsing section
 	// ------------------------------------
 
 	// quick explanation of components:
-	//   ac - used to accumulate values
-	//   isf - used to indicate a fault
-	//   lv - used to indicate "looking for a value": implements
+	//  ac - used to accumulate values
+	//  isf - used to indicate a fault
+	//  lv - used to indicate "looking for a value": implements
 	//		the logic to allow values with no types to be strings
-	//   params - used to store parameters in method calls
-	//   method - used to store method name
+	//  params - used to store parameters in method calls
+	//  method - used to store method name
 	//	 stack - array with parent tree of the xml element,
 	//			 used to validate the nesting of elements
 
 	//-------------------------------------
-	//  Start Element Handler
+	// Start Element Handler
 	//-------------------------------------
 
 	function open_tag($the_parser, $name, $attrs)
@@ -942,7 +942,7 @@
 
 
 	//-------------------------------------
-	//  End Element Handler
+	// End Element Handler
 	//-------------------------------------
 
 	function closing_tag($the_parser, $name)
@@ -951,7 +951,7 @@
 
 		// Remove current element from stack and set variable
 		// NOTE: If the XML validates, then we do not have to worry about
-		// the opening and closing of elements.  Nesting is checked on the opening
+		// the opening and closing of elements. Nesting is checked on the opening
 		// tag so we be safe there as well.
 
 		$curr_elem = array_shift($this->xh[$the_parser]['stack']);
@@ -1080,13 +1080,13 @@
 				// We're all good kids with nuthin' to do
 			break;
 			default:
-				// End of an Invalid Element.  Taken care of during the opening tag though
+				// End of an Invalid Element. Taken care of during the opening tag though
 			break;
 		}
 	}
 
 	//-------------------------------------
-	//  Parses Character Data
+	// Parses Character Data
 	//-------------------------------------
 
 	function character_data($the_parser, $data)
@@ -1116,7 +1116,7 @@
 	function output_parameters($array=FALSE)
 	{
 		$CI =& get_instance();
-		
+
 		if ($array !== FALSE && is_array($array))
 		{
 			while (list($key) = each($array))
diff --git a/system/libraries/Xmlrpcs.php b/system/libraries/Xmlrpcs.php
index 9cd3321..88af606 100644
--- a/system/libraries/Xmlrpcs.php
+++ b/system/libraries/Xmlrpcs.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -132,7 +132,7 @@
 	function serve()
 	{
 		$r = $this->parseRequest();
-		$payload  = '<?xml version="1.0" encoding="'.$this->xmlrpc_defencoding.'"?'.'>'."\n";
+		$payload = '<?xml version="1.0" encoding="'.$this->xmlrpc_defencoding.'"?'.'>'."\n";
 		$payload .= $this->debug_msg;
 		$payload .= $r->prepare_response();
 
@@ -156,7 +156,7 @@
 	function add_to_map($methodname, $function, $sig, $doc)
 	{
 		$this->methods[$methodname] = array(
-			'function'  => $function,
+			'function' => $function,
 			'signature' => $sig,
 			'docstring' => $doc
 		);
@@ -176,7 +176,7 @@
 		global $HTTP_RAW_POST_DATA;
 
 		//-------------------------------------
-		//  Get Data
+		// Get Data
 		//-------------------------------------
 
 		if ($data == '')
@@ -185,7 +185,7 @@
 		}
 
 		//-------------------------------------
-		//  Set up XML Parser
+		// Set up XML Parser
 		//-------------------------------------
 
 		$parser = xml_parser_create($this->xmlrpc_defencoding);
@@ -207,7 +207,7 @@
 
 
 		//-------------------------------------
-		//  PARSE + PROCESS XML DATA
+		// PARSE + PROCESS XML DATA
 		//-------------------------------------
 
 		if ( ! xml_parse($parser, $data, 1))
@@ -235,7 +235,7 @@
 			{
 				if ($this->debug === TRUE)
 				{
-					$plist .= "$i - " .  print_r(get_object_vars($parser_object->xh[$parser]['params'][$i]), TRUE). ";\n";
+					$plist .= "$i - " . print_r(get_object_vars($parser_object->xh[$parser]['params'][$i]), TRUE). ";\n";
 				}
 
 				$m->addParam($parser_object->xh[$parser]['params'][$i]);
@@ -252,7 +252,7 @@
 		}
 
 		//-------------------------------------
-		//  SET DEBUGGING MESSAGE
+		// SET DEBUGGING MESSAGE
 		//-------------------------------------
 
 		if ($this->debug === TRUE)
@@ -285,7 +285,7 @@
 		}
 
 		//-------------------------------------
-		//  Valid Method
+		// Valid Method
 		//-------------------------------------
 
 		if ( ! isset($this->methods[$methName]['function']))
@@ -294,7 +294,7 @@
 		}
 
 		//-------------------------------------
-		//  Check for Method (and Object)
+		// Check for Method (and Object)
 		//-------------------------------------
 
 		$method_parts = explode(".", $this->methods[$methName]['function']);
@@ -320,7 +320,7 @@
 		}
 
 		//-------------------------------------
-		//  Checking Methods Signature
+		// Checking Methods Signature
 		//-------------------------------------
 
 		if (isset($this->methods[$methName]['signature']))
@@ -353,7 +353,7 @@
 		}
 
 		//-------------------------------------
-		//  Calls the Function
+		// Calls the Function
 		//-------------------------------------
 
 		if ($objectCall === TRUE)
@@ -381,11 +381,11 @@
 			return call_user_func($this->methods[$methName]['function'], $m);
 		}
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
-	 * Server Function:  List Methods
+	 * Server Function: List Methods
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -409,11 +409,11 @@
 		$v->addArray($output);
 		return new XML_RPC_Response($v);
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
-	 * Server Function:  Return Signature for Method
+	 * Server Function: Return Signature for Method
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -458,7 +458,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Server Function:  Doc String for Method
+	 * Server Function: Doc String for Method
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -480,11 +480,11 @@
 			return new XML_RPC_Response(0, $this->xmlrpcerr['introspect_unknown'], $this->xmlrpcstr['introspect_unknown']);
 		}
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
-	 * Server Function:  Multi-call
+	 * Server Function: Multi-call
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -528,7 +528,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Multi-call Function:  Error Handling
+	 * Multi-call Function: Error Handling
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -536,7 +536,7 @@
 	 */
 	function multicall_error($err)
 	{
-		$str  = is_string($err) ? $this->xmlrpcstr["multicall_${err}"] : $err->faultString();
+		$str = is_string($err) ? $this->xmlrpcstr["multicall_${err}"] : $err->faultString();
 		$code = is_string($err) ? $this->xmlrpcerr["multicall_${err}"] : $err->faultCode();
 
 		$struct['faultCode'] = new XML_RPC_Values($code, 'int');
@@ -548,7 +548,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  Multi-call Function:  Processes method
+	 * Multi-call Function: Processes method
 	 *
 	 * @access	public
 	 * @param	mixed
diff --git a/system/libraries/Zip.php b/system/libraries/Zip.php
index 666327d..1ae3e7f 100644
--- a/system/libraries/Zip.php
+++ b/system/libraries/Zip.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -30,7 +30,7 @@
  * @author		ExpressionEngine Dev Team
  * @link		http://codeigniter.com/user_guide/libraries/zip.html
  */
-class CI_Zip  {
+class CI_Zip {
 
 	var $zipdata	= '';
 	var $directory	= '';
@@ -150,7 +150,7 @@
 	 * Add Data to Zip
 	 *
 	 * Lets you add files to the archive. If the path is included
-	 * in the filename it will be placed within a directory.  Make
+	 * in the filename it will be placed within a directory. Make
 	 * sure you use add_dir() first to create the folder.
 	 *
 	 * @access	public
@@ -192,7 +192,7 @@
 		$filepath = str_replace("\\", "/", $filepath);
 
 		$uncompressed_size = strlen($data);
-		$crc32  = crc32($data);
+		$crc32 = crc32($data);
 
 		$gzdata = gzcompress($data);
 		$gzdata = substr($gzdata, 2, -4);
@@ -267,7 +267,7 @@
 	 * Read a directory and add it to the zip.
 	 *
 	 * This function recursively reads a folder and everything it contains (including
-	 * sub-folders) and creates a zip based on it.  Whatever directory structure
+	 * sub-folders) and creates a zip based on it. Whatever directory structure
 	 * is in the original file path will be recreated in the zip file.
 	 *
 	 * @access	public
@@ -402,7 +402,7 @@
 	/**
 	 * Initialize Data
 	 *
-	 * Lets you clear current zip data.  Useful if you need to create
+	 * Lets you clear current zip data. Useful if you need to create
 	 * multiple zips with different data.
 	 *
 	 * @access	public
diff --git a/system/libraries/javascript/Jquery.php b/system/libraries/javascript/Jquery.php
index baab83d..97107f0 100644
--- a/system/libraries/javascript/Jquery.php
+++ b/system/libraries/javascript/Jquery.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 /**
  * CodeIgniter
@@ -23,7 +23,7 @@
  * @category	Loader
  * @link		http://www.codeigniter.com/user_guide/libraries/javascript.html
  */
- 
+
 class CI_Jquery extends CI_Javascript {
 
 	var $_javascript_folder = 'js';
@@ -36,20 +36,20 @@
 
 	public function __construct($params)
 	{
-		$this->CI =& get_instance();	
+		$this->CI =& get_instance();
 		extract($params);
 
 		if ($autoload === TRUE)
 		{
-			$this->script();			
+			$this->script();
 		}
-		
+
 		log_message('debug', "Jquery Class Initialized");
 	}
-	
-	// --------------------------------------------------------------------	 
+
+	// --------------------------------------------------------------------
 	// Event Code
-	// --------------------------------------------------------------------	
+	// --------------------------------------------------------------------
 
 	/**
 	 * Blur
@@ -65,9 +65,9 @@
 	{
 		return $this->_add_event($element, $js, 'blur');
 	}
-	
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Change
 	 *
@@ -82,9 +82,9 @@
 	{
 		return $this->_add_event($element, $js, 'change');
 	}
-	
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Click
 	 *
@@ -112,7 +112,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Double Click
 	 *
@@ -129,7 +129,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Error
 	 *
@@ -146,7 +146,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Focus
 	 *
@@ -163,7 +163,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Hover
 	 *
@@ -185,7 +185,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Keydown
 	 *
@@ -202,7 +202,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Keyup
 	 *
@@ -216,10 +216,10 @@
 	function _keyup($element = 'this', $js = '')
 	{
 		return $this->_add_event($element, $js, 'keyup');
-	}	
+	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Load
 	 *
@@ -233,10 +233,10 @@
 	function _load($element = 'this', $js = '')
 	{
 		return $this->_add_event($element, $js, 'load');
-	}	
-	
+	}
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Mousedown
 	 *
@@ -253,7 +253,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Mouse Out
 	 *
@@ -270,7 +270,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Mouse Over
 	 *
@@ -321,7 +321,7 @@
 		{
 			$array_js = array($array_js);
 		}
-		
+
 		foreach ($array_js as $js)
 		{
 			$this->jquery_code_for_compile[] = "\t$js\n";
@@ -361,7 +361,7 @@
 	{
 		return $this->_add_event($element, $js, 'scroll');
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
@@ -379,10 +379,10 @@
 		return $this->_add_event($element, $js, 'unload');
 	}
 
-	// --------------------------------------------------------------------	 
+	// --------------------------------------------------------------------
 	// Effects
-	// --------------------------------------------------------------------	
-	
+	// --------------------------------------------------------------------
+
 	/**
 	 * Add Class
 	 *
@@ -395,7 +395,7 @@
 	function _addClass($element = 'this', $class='')
 	{
 		$element = $this->_prep_element($element);
-		$str  = "$({$element}).addClass(\"$class\");";
+		$str = "$({$element}).addClass(\"$class\");";
 		return $str;
 	}
 
@@ -416,9 +416,9 @@
 	{
 		$element = $this->_prep_element($element);
 		$speed = $this->_validate_speed($speed);
-		
+
 		$animations = "\t\t\t";
-		
+
 		foreach ($params as $param=>$value)
 		{
 			$animations .= $param.': \''.$value.'\', ';
@@ -430,19 +430,19 @@
 		{
 			$speed = ', '.$speed;
 		}
-		
+
 		if ($extra != '')
 		{
 			$extra = ', '.$extra;
 		}
-		
-		$str  = "$({$element}).animate({\n$animations\n\t\t}".$speed.$extra.");";
-		
+
+		$str = "$({$element}).animate({\n$animations\n\t\t}".$speed.$extra.");";
+
 		return $str;
 	}
 
 	// --------------------------------------------------------------------
-		
+
 	/**
 	 * Fade In
 	 *
@@ -456,21 +456,21 @@
 	 */
 	function _fadeIn($element = 'this', $speed = '', $callback = '')
 	{
-		$element = $this->_prep_element($element);	
+		$element = $this->_prep_element($element);
 		$speed = $this->_validate_speed($speed);
-		
+
 		if ($callback != '')
 		{
 			$callback = ", function(){\n{$callback}\n}";
 		}
-		
-		$str  = "$({$element}).fadeIn({$speed}{$callback});";
-		
+
+		$str = "$({$element}).fadeIn({$speed}{$callback});";
+
 		return $str;
 	}
-		
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Fade Out
 	 *
@@ -486,14 +486,14 @@
 	{
 		$element = $this->_prep_element($element);
 		$speed = $this->_validate_speed($speed);
-		
+
 		if ($callback != '')
 		{
 			$callback = ", function(){\n{$callback}\n}";
 		}
-		
-		$str  = "$({$element}).fadeOut({$speed}{$callback});";
-		
+
+		$str = "$({$element}).fadeOut({$speed}{$callback});";
+
 		return $str;
 	}
 
@@ -512,19 +512,19 @@
 	 */
 	function _hide($element = 'this', $speed = '', $callback = '')
 	{
-		$element = $this->_prep_element($element);	
+		$element = $this->_prep_element($element);
 		$speed = $this->_validate_speed($speed);
-		
+
 		if ($callback != '')
 		{
 			$callback = ", function(){\n{$callback}\n}";
 		}
-		
-		$str  = "$({$element}).hide({$speed}{$callback});";
+
+		$str = "$({$element}).hide({$speed}{$callback});";
 
 		return $str;
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
@@ -539,12 +539,12 @@
 	function _removeClass($element = 'this', $class='')
 	{
 		$element = $this->_prep_element($element);
-		$str  = "$({$element}).removeClass(\"$class\");";
+		$str = "$({$element}).removeClass(\"$class\");";
 		return $str;
 	}
 
 	// --------------------------------------------------------------------
-			
+
 	/**
 	 * Slide Up
 	 *
@@ -558,21 +558,21 @@
 	 */
 	function _slideUp($element = 'this', $speed = '', $callback = '')
 	{
-		$element = $this->_prep_element($element);	
+		$element = $this->_prep_element($element);
 		$speed = $this->_validate_speed($speed);
-		
+
 		if ($callback != '')
 		{
 			$callback = ", function(){\n{$callback}\n}";
 		}
-		
-		$str  = "$({$element}).slideUp({$speed}{$callback});";
-		
+
+		$str = "$({$element}).slideUp({$speed}{$callback});";
+
 		return $str;
 	}
-		
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Slide Down
 	 *
@@ -588,19 +588,19 @@
 	{
 		$element = $this->_prep_element($element);
 		$speed = $this->_validate_speed($speed);
-		
+
 		if ($callback != '')
 		{
 			$callback = ", function(){\n{$callback}\n}";
 		}
-		
-		$str  = "$({$element}).slideDown({$speed}{$callback});";
-		
+
+		$str = "$({$element}).slideDown({$speed}{$callback});";
+
 		return $str;
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Slide Toggle
 	 *
@@ -616,19 +616,19 @@
 	{
 		$element = $this->_prep_element($element);
 		$speed = $this->_validate_speed($speed);
-		
+
 		if ($callback != '')
 		{
 			$callback = ", function(){\n{$callback}\n}";
 		}
-		
-		$str  = "$({$element}).slideToggle({$speed}{$callback});";
-		
+
+		$str = "$({$element}).slideToggle({$speed}{$callback});";
+
 		return $str;
 	}
-		
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Toggle
 	 *
@@ -641,12 +641,12 @@
 	function _toggle($element = 'this')
 	{
 		$element = $this->_prep_element($element);
-		$str  = "$({$element}).toggle();";
+		$str = "$({$element}).toggle();";
 		return $str;
 	}
-	
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Toggle Class
 	 *
@@ -659,12 +659,12 @@
 	function _toggleClass($element = 'this', $class='')
 	{
 		$element = $this->_prep_element($element);
-		$str  = "$({$element}).toggleClass(\"$class\");";
+		$str = "$({$element}).toggleClass(\"$class\");";
 		return $str;
 	}
-	
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Show
 	 *
@@ -678,16 +678,16 @@
 	 */
 	function _show($element = 'this', $speed = '', $callback = '')
 	{
-		$element = $this->_prep_element($element);	
+		$element = $this->_prep_element($element);
 		$speed = $this->_validate_speed($speed);
-		
+
 		if ($callback != '')
 		{
 			$callback = ", function(){\n{$callback}\n}";
 		}
-		
-		$str  = "$({$element}).show({$speed}{$callback});";
-		
+
+		$str = "$({$element}).show({$speed}{$callback});";
+
 		return $str;
 	}
 
@@ -696,7 +696,7 @@
 	/**
 	 * Updater
 	 *
-	 * An Ajax call that populates the designated DOM node with 
+	 * An Ajax call that populates the designated DOM node with
 	 * returned content
 	 *
 	 * @access	private
@@ -705,13 +705,13 @@
 	 * @param	string	optional parameters
 	 * @return	string
 	 */
-	
+
 	function _updater($container = 'this', $controller, $options = '')
-	{	
+	{
 		$container = $this->_prep_element($container);
-		
+
 		$controller = (strpos('://', $controller) === FALSE) ? $controller : $this->CI->config->site_url($controller);
-		
+
 		// ajaxStart and ajaxStop are better choices here... but this is a stop gap
 		if ($this->CI->config->item('javascript_ajax_img') == '')
 		{
@@ -721,7 +721,7 @@
 		{
 			$loading_notifier = '<img src=\'' . $this->CI->config->slash_item('base_url') . $this->CI->config->item('javascript_ajax_img') . '\' alt=\'Loading\' />';
 		}
-		
+
 		$updater = "$($container).empty();\n"; // anything that was in... get it out
 		$updater .= "\t\t$($container).prepend(\"$loading_notifier\");\n"; // to replace with an image
 
@@ -741,7 +741,7 @@
 	// --------------------------------------------------------------------
 	// Pre-written handy stuff
 	// --------------------------------------------------------------------
-	 
+
 	/**
 	 * Zebra tables
 	 *
@@ -753,8 +753,8 @@
 	function _zebraTables($class = '', $odd = 'odd', $hover = '')
 	{
 		$class = ($class != '') ? '.'.$class : '';
-		
-		$zebra  = "\t\$(\"table{$class} tbody tr:nth-child(even)\").addClass(\"{$odd}\");";
+
+		$zebra = "\t\$(\"table{$class} tbody tr:nth-child(even)\").addClass(\"{$odd}\");";
 
 		$this->jquery_code_for_compile[] = $zebra;
 
@@ -771,7 +771,7 @@
 	// --------------------------------------------------------------------
 	// Plugins
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Corner Plugin
 	 *
@@ -793,7 +793,7 @@
 
 		return "$(" . $this->_prep_element($element) . ").corner(".$corner_style.");";
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
@@ -805,7 +805,7 @@
 	 * @return	void
 	 */
 	function modal($src, $relative = FALSE)
-	{	
+	{
 		$this->jquery_code_for_load[] = $this->external($src, $relative);
 	}
 
@@ -897,7 +897,7 @@
 	{
 		$this->jquery_code_for_compile[] = "\t$(" . $this->_prep_element($table) . ").tablesorter($options);\n";
 	}
-	
+
 	// --------------------------------------------------------------------
 	// Class functions
 	// --------------------------------------------------------------------
@@ -912,7 +912,7 @@
 	 * @param	string	The code to execute
 	 * @param	string	The event to pass
 	 * @return	string
-	 */	
+	 */
 	function _add_event($element, $js, $event)
 	{
 		if (is_array($js))
@@ -953,15 +953,15 @@
 		$script = '$(document).ready(function() {' . "\n";
 		$script .= implode('', $this->jquery_code_for_compile);
 		$script .= '});';
-		
+
 		$output = ($script_tags === FALSE) ? $script : $this->inline($script);
 
 		$this->CI->load->vars(array($view_var => $output));
 
 	}
-	
+
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Clear Compile
 	 *
@@ -976,7 +976,7 @@
 	}
 
 	// --------------------------------------------------------------------
-	
+
 	/**
 	 * Document Ready
 	 *
@@ -992,7 +992,7 @@
 			$js = array ($js);
 
 		}
-		
+
 		foreach ($js as $script)
 		{
 			$this->jquery_code_for_compile[] = $script;
@@ -1016,7 +1016,7 @@
 		$this->jquery_code_for_load[] = $library_src;
 		return $library_src;
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
@@ -1036,10 +1036,10 @@
 		{
 			$element = '"'.$element.'"';
 		}
-		
+
 		return $element;
 	}
-	
+
 	// --------------------------------------------------------------------
 
 	/**
@@ -1050,7 +1050,7 @@
 	 * @access	private
 	 * @param	string
 	 * @return	string
-	 */	
+	 */
 	function _validate_speed($speed)
 	{
 		if (in_array($speed, array('slow', 'normal', 'fast')))
@@ -1061,7 +1061,7 @@
 		{
 			$speed = '';
 		}
-	
+
 		return $speed;
 	}
 
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index 76f9e5d..8469a59 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -65,14 +65,14 @@
 <ul>
 	<li>Security
 		<ul>
-			<li>An improvement was made to the MySQL and MySQLi drivers to prevent exposing a potential vector for SQL injection on sites using multi-byte character sets in the database client connection.  <p>An incompatibility in PHP versions &lt; 5.2.3 and MySQL &lt; 5.0.7 with <em>mysql_set_charset()</em> creates a situation where using multi-byte  character sets on these environments may potentially expose a SQL injection attack vector.  Latin-1, UTF-8, and other "low ASCII" character sets are unaffected on all environments.</p>  <p class="critical">If you are running or considering running a multi-byte character set for your database connection, please pay close attention to the server environment you are deploying on to ensure you are not vulnerable.</p></li>
+			<li>An improvement was made to the MySQL and MySQLi drivers to prevent exposing a potential vector for SQL injection on sites using multi-byte character sets in the database client connection. <p>An incompatibility in PHP versions &lt; 5.2.3 and MySQL &lt; 5.0.7 with <em>mysql_set_charset()</em> creates a situation where using multi-byte character sets on these environments may potentially expose a SQL injection attack vector. Latin-1, UTF-8, and other "low ASCII" character sets are unaffected on all environments.</p> <p class="critical">If you are running or considering running a multi-byte character set for your database connection, please pay close attention to the server environment you are deploying on to ensure you are not vulnerable.</p></li>
 		</ul>
 	<li>General Changes
 		<ul>
 			<li>Fixed a bug where there was a misspelling within a code comment in the index.php file.</li>
-			<li>Added Session Class userdata to the output profiler.  Additionally, added a show/hide toggle on HTTP Headers, Session Data and Config Variables.</li>
+			<li>Added Session Class userdata to the output profiler. Additionally, added a show/hide toggle on HTTP Headers, Session Data and Config Variables.</li>
 			<li>Removed internal usage of the <samp>EXT</samp> constant.</li>
-			<li>Visual updates to the welcome_message view file and default error templates.  Thanks to <a href="https://bitbucket.org/danijelb">danijelb</a> for the pull request.</li>
+			<li>Visual updates to the welcome_message view file and default error templates. Thanks to <a href="https://bitbucket.org/danijelb">danijelb</a> for the pull request.</li>
 		</ul>
 	</li>
 	<li>Helpers
@@ -149,7 +149,7 @@
 			<li>Added <kbd>$config['cookie_secure']</kbd> to the config file to allow requiring a secure (HTTPS) in order to set cookies.</li>
 			<li class="reactor">Added the constant <kbd>CI_CORE</kbd> to help differentiate between Core: TRUE and Reactor: FALSE.</li>
 			<li class="reactor">Added an <kbd>ENVIRONMENT</kbd> constant in index.php, which affects PHP error reporting settings, and optionally,
-                which configuration files are loaded (see below). Read more on the <a href="general/environments.html">Handling Environments</a> page.</li>
+        which configuration files are loaded (see below). Read more on the <a href="general/environments.html">Handling Environments</a> page.</li>
 			<li class="reactor">Added support for <a href="libraries/config.html#environments">environment-specific</a> configuration files.</li>
 		</ul>
 	</li>
@@ -186,15 +186,15 @@
 		<ul>
 			<li>PHP 4 support is removed. CodeIgniter now requires PHP 5.1.6.</li>
 			<li>Scaffolding, having been deprecated for a number of versions, has been removed.</li>
-			<li>Plugins have been removed, in favor of Helpers.  The CAPTCHA plugin has been converted to a Helper and <a href="./helpers/captcha_helper.html">documented</a>.  The JavaScript calendar plugin was removed due to the ready availability of great JavaScript calendars, particularly with jQuery.</li>
+			<li>Plugins have been removed, in favor of Helpers. The CAPTCHA plugin has been converted to a Helper and <a href="./helpers/captcha_helper.html">documented</a>. The JavaScript calendar plugin was removed due to the ready availability of great JavaScript calendars, particularly with jQuery.</li>
 			<li>Added new special Library type: <a href="./general/drivers.html">Drivers</a>.</li>
-			<li class="reactor">Added full query-string support.  See the config file for details.</li>
+			<li class="reactor">Added full query-string support. See the config file for details.</li>
 			<li>Moved the application folder outside of the system folder.</li>
 			<li>Moved system/cache and system/logs directories to the application directory.</li>
 			<li>Added routing overrides to the main index.php file, enabling the normal routing to be overridden on a per "index" file basis.</li>
-			<li>Added the ability to set config values (or override config values) directly from data set in the main index.php file.  This allows a single application to be used with multiple front controllers, each having its own config values.</li>
+			<li>Added the ability to set config values (or override config values) directly from data set in the main index.php file. This allows a single application to be used with multiple front controllers, each having its own config values.</li>
 			<li>Added <kbd>$config['directory_trigger']</kbd> to the config file so that a controller sub-directory can be specified when running _GET strings instead of URI segments.</li>
-			<li>Added ability to set "Package" paths - specific paths where the Loader and Config classes should try to look first for a requested file.  This allows distribution of sub-applications with their own libraries, models, config files, etc. in a single "package" directory.  See the <a href="libraries/loader.html">Loader class</a> documentation for more details.</li>
+			<li>Added ability to set "Package" paths - specific paths where the Loader and Config classes should try to look first for a requested file. This allows distribution of sub-applications with their own libraries, models, config files, etc. in a single "package" directory. See the <a href="libraries/loader.html">Loader class</a> documentation for more details.</li>
 			<li>In-development code is now hosted at <a href="http://bitbucket.org/ellislab/codeigniter-reactor/">BitBucket</a>.</li>
 			<li>Removed the deprecated Validation Class.</li>
 			<li>Added CI_ Prefix to all core classes.</li>
@@ -261,7 +261,7 @@
 			<li>Added <kbd>convert_accented_characters()</kbd> function to <a href="./helpers/text_helper.html">text helper</a>.</li>
 			<li>Added accept-charset to the list of inserted attributes of <kbd>form_open()</kbd> in the <a href="helpers/form_helper.html">Form Helper</a>.</li>
 			<li>Deprecated the <kbd>dohash()</kbd> function in favour of <kbd>do_hash()</kbd> for naming consistency.</li>
-			<li>Non-backwards compatible change made to <kbd>get_dir_file_info()</kbd> in the <a href="helpers/file_helper.html">File Helper</a>.  No longer recurses
+			<li>Non-backwards compatible change made to <kbd>get_dir_file_info()</kbd> in the <a href="helpers/file_helper.html">File Helper</a>. No longer recurses
 				by default so as to encourage responsible use (this function can cause server performance issues when used without caution).</li>
 			<li>Modified the second parameter of <kbd>directory_map()</kbd> in the <a href="helpers/directory_helper.html">Directory Helper</a> to accept an integer to specify recursion depth.</li>
 			<li>Modified <kbd>delete_files()</kbd> in the <a href="helpers/file_helper.html">File Helper</a> to return FALSE on failure.</li>
@@ -280,7 +280,7 @@
 	<li>Other Changes
 		<ul>
 			<li>Added an optional second parameter to <kbd>show_404()</kbd> to disable logging.</li>
-			<li>Updated loader to automatically apply the sub-class prefix as an option when loading classes.  Class names can be prefixed with the standard "CI_" or the same prefix as the subclass prefix, or no prefix at all.</li>
+			<li>Updated loader to automatically apply the sub-class prefix as an option when loading classes. Class names can be prefixed with the standard "CI_" or the same prefix as the subclass prefix, or no prefix at all.</li>
 			<li>Increased randomness with <kbd>is_really_writable()</kbd> to avoid file collisions when hundreds or thousands of requests occur at once.</li>
 			<li>Switched some DIR_WRITE_MODE constant uses to FILE_WRITE_MODE where files and not directories are being operated on.</li>
 			<li><kbd>get_mime_by_extension()</kbd> is now case insensitive.</li>
@@ -490,15 +490,15 @@
 <ul>
 	<li>Libraries
 		<ul>
-			<li>Added a new <a href="libraries/form_validation.html">Form Validation Class</a>.  It simplifies setting rules and field names, supports arrays as field names, allows groups of validation rules to be saved in a config file, and adds some helper functions for use in view files.  <strong>Please note that the old Validation class is now deprecated</strong>. We will leave it in the library folder for some time so that existing applications that use it will not break, but you are encouraged to migrate to the new version.</li>
+			<li>Added a new <a href="libraries/form_validation.html">Form Validation Class</a>. It simplifies setting rules and field names, supports arrays as field names, allows groups of validation rules to be saved in a config file, and adds some helper functions for use in view files. <strong>Please note that the old Validation class is now deprecated</strong>. We will leave it in the library folder for some time so that existing applications that use it will not break, but you are encouraged to migrate to the new version.</li>
 			<li>Updated the <a href="libraries/sessions.html">Sessions class</a> so that any custom data being saved gets stored to a database rather than the session cookie (assuming you are using a database to store session data), permitting much more data to be saved.</li>
 			<li>Added the ability to store libraries in subdirectories within either the main "libraries" or the local application "libraries" folder. Please see the <a href="libraries/loader.html">Loader class</a> for more info.</li>
 			<li>Added the ability to assign library objects to your own variable names when you use <kbd>$this->load->library()</kbd>. Please see the <a href="libraries/loader.html">Loader class</a> for more info.</li>
 			<li>Added controller class/method info to <a href="general/profiling.html">Profiler class</a> and support for multiple database connections.</li>
 			<li>Improved the "auto typography" feature and moved it out of the helper into its own <a href="libraries/typography.html">Typography Class</a>.</li>
 			<li>Improved performance and accuracy of <kbd>xss_clean()</kbd>, including reduction of false positives on image/file tests.</li>
-			<li>Improved <a href="./libraries/parser.html">Parser class</a> to allow multiple calls to the parse() function.  The output of each is appended in the output.</li>
-			<li>Added <dfn>max_filename</dfn> option to set a file name length limit in the  <a href="libraries/file_uploading.html">File Upload Class</a>.</li>
+			<li>Improved <a href="./libraries/parser.html">Parser class</a> to allow multiple calls to the parse() function. The output of each is appended in the output.</li>
+			<li>Added <dfn>max_filename</dfn> option to set a file name length limit in the <a href="libraries/file_uploading.html">File Upload Class</a>.</li>
 			<li>Added <dfn>set_status_header()</dfn> function to <a href="libraries/output.html">Output class</a>.</li>
 			<li>Modified <a href="libraries/pagination.html">Pagination</a> class to only output the "First" link when the link for page one would not be shown.</li>
 			<li>Added support for mb_strlen in the <a href="libraries/form_validation.html">Form Validation</a> class so that multi-byte languages will calculate string lengths properly.</li>
@@ -506,8 +506,8 @@
 	</li>
 	<li>Database
 		<ul>
-			<li>Improved Active Record class to allow full path column and table names:  hostname.database.table.column.  Also improved the alias handling.</li>
-			<li>Improved how table and column names are escaped and prefixed.  It now honors full path names when adding prefixes and escaping.</li>
+			<li>Improved Active Record class to allow full path column and table names: hostname.database.table.column. Also improved the alias handling.</li>
+			<li>Improved how table and column names are escaped and prefixed. It now honors full path names when adding prefixes and escaping.</li>
 			<li>Added Active Record caching feature to "update" and "delete" functions.</li>
 			<li>Added removal of non-printing control characters in <kbd>escape_str()</kbd> of DB drivers that do not have native PHP escaping mechanisms (mssql, oci8, odbc), to avoid potential SQL errors, and possible sources of SQL injection.</li>
 			<li>Added port support to MySQL, MySQLi, and MS SQL database drivers.</li>
@@ -516,10 +516,10 @@
 	</li>
 	<li>Helpers
 		<ul>
-			<li>Added several new "setting" functions to the <a href="helpers/form_helper.html">Form helper</a> that allow POST data to be retrieved and set into forms.  These are intended to be used on their own, or with the new <a href="libraries/form_validation.html">Form Validation Class</a>.</li>
-			<li>Added <kbd>current_url()</kbd> and uri_segments() to  <a href="helpers/url_helper.html">URL helper</a>.</li>
+			<li>Added several new "setting" functions to the <a href="helpers/form_helper.html">Form helper</a> that allow POST data to be retrieved and set into forms. These are intended to be used on their own, or with the new <a href="libraries/form_validation.html">Form Validation Class</a>.</li>
+			<li>Added <kbd>current_url()</kbd> and uri_segments() to <a href="helpers/url_helper.html">URL helper</a>.</li>
 			<li>Altered <kbd>auto_link()</kbd> in the <a href="helpers/url_helper.html">URL helper</a> so that email addresses with "+" included will be linked.</li>
-			<li>Added <kbd>meta()</kbd> function to  <a href="helpers/html_helper.html">HTML helper</a>.</li>
+			<li>Added <kbd>meta()</kbd> function to <a href="helpers/html_helper.html">HTML helper</a>.</li>
 			<li>Improved accuracy of calculations in <a href="helpers/number_helper.html">Number helper</a>.</li>
 			<li>Removed added newlines ("\n") from most form and html helper functions.</li>
 			<li>Tightened up validation in the <a href="helpers/date_helper.html">Date helper</a> function <kbd>human_to_unix()</kbd>, and eliminated the POSIX regex.</li>
@@ -561,10 +561,10 @@
 	<li>Fixed Oracle bug (#3306) that was preventing multiple queries in one action.</li>
 	<li>Fixed ODBC bug that was ignoring connection params due to its use of a constructor.</li>
 	<li>Fixed a DB driver bug with num_rows() that would cause an error with the Oracle driver.</li>
-	<li>Fixed MS SQL bug (#4915).  Added brackets around database name in MS SQL driver when selecting the database, in the event that reserved characters are used in the name.</li>
+	<li>Fixed MS SQL bug (#4915). Added brackets around database name in MS SQL driver when selecting the database, in the event that reserved characters are used in the name.</li>
 	<li>Fixed a DB caching bug (4718) in which the path was incorrect when no URI segments were present.</li>
-	<li>Fixed Image_lib class bug #4562.  A path was not defined for NetPBM.</li>
-	<li>Fixed Image_lib class bug #4532.  When cropping an image with identical height/width settings on output, a copy is made.</li>
+	<li>Fixed Image_lib class bug #4562. A path was not defined for NetPBM.</li>
+	<li>Fixed Image_lib class bug #4532. When cropping an image with identical height/width settings on output, a copy is made.</li>
 	<li>Fixed DB_driver bug (4900), in which a database error was not being logged correctly.</li>
 	<li>Fixed DB backup bug in which field names were not being escaped.</li>
 	<li>Fixed a DB Active Record caching bug in which multiple calls to cached data were not being honored.</li>
@@ -805,8 +805,8 @@
 		<ul>
 			<li>Added <kbd>protect_identifiers()</kbd> in <a href="./database/active_record.html">Active Record</a>.</li>
 			<li>All AR queries are backticked if appropriate to the database.</li>
-			<li>Added <kbd>where_in()</kbd>, <kbd>or_where_in()</kbd>, <kbd>where_not_in()</kbd>,  <kbd>or_where_not_in()</kbd>, <kbd>not_like()</kbd> and <kbd>or_not_like()</kbd> to <a href="./database/active_record.html">Active Record</a>.</li>
-			<li>Added support for <kbd>limit()</kbd>  into <kbd>update()</kbd> and <kbd>delete()</kbd> statements in  <a href="./database/active_record.html">Active Record</a>.</li>
+			<li>Added <kbd>where_in()</kbd>, <kbd>or_where_in()</kbd>, <kbd>where_not_in()</kbd>, <kbd>or_where_not_in()</kbd>, <kbd>not_like()</kbd> and <kbd>or_not_like()</kbd> to <a href="./database/active_record.html">Active Record</a>.</li>
+			<li>Added support for <kbd>limit()</kbd> into <kbd>update()</kbd> and <kbd>delete()</kbd> statements in <a href="./database/active_record.html">Active Record</a>.</li>
 			<li>Added <kbd>empty_table()</kbd> and <kbd>truncate_table()</kbd> to <a href="./database/active_record.html">Active Record</a>.</li>
 			<li>Added the ability to pass an array of tables to the <kbd>delete()</kbd> statement in <a href="./database/active_record.html">Active Record</a>.</li>
 			<li>Added <kbd>count_all_results()</kbd> function to <a href="./database/active_record.html">Active Record</a>.</li>
@@ -825,7 +825,7 @@
 			<li>Added $this->db->dbprefix() to manually add database prefixes.</li>
 			<li>Added 'random' as an <kbd>order_by()</kbd> option , and removed &quot;rand()&quot; as a listed option as it was MySQL only.</li>
 			<li>Added a check for NULL fields in the MySQL database backup utility.</li>
-			<li>Added &quot;constrain_by_prefix&quot; parameter to db-&gt;list_table() function.  If set to TRUE it will limit the result to only table names with the current prefix.</li>
+			<li>Added &quot;constrain_by_prefix&quot; parameter to db-&gt;list_table() function. If set to TRUE it will limit the result to only table names with the current prefix.</li>
 			<li>Deprecated from Active Record; <kbd>getwhere()</kbd> for <kbd>get_where()</kbd>; <kbd>groupby()</kbd> for <kbd>group_by()</kbd>; <kbd>havingor()</kbd> for <kbd>having_or()</kbd>; <kbd>orderby()</kbd> for <kbd>order_by</kbd>; <kbd>orwhere()</kbd> for <kbd>or_where()</kbd>; and <kbd>orlike()</kbd> for <kbd>or_like()</kbd>.</li>
 			<li>Modified <kbd>csv_from_result()</kbd> to output CSV data more in the spirit of basic rules of RFC 4180.</li>
 			<li>Added 'char_set' and 'dbcollat' database configuration settings, to explicitly set the client communication properly.</li>
@@ -944,7 +944,7 @@
 	<li>Fixed a bug in Validation where <kbd>valid_ip()</kbd> wasn't called properly.</li>
 	<li>Fixed a bug in Validation where individual error messages for checkboxes wasn't supported.</li>
 	<li>Fixed a bug in captcha calling an invalid PHP function.</li>
-	<li>Fixed a bug in the cookie helper "set_cookie" function.  It was not honoring the config settings.</li>
+	<li>Fixed a bug in the cookie helper "set_cookie" function. It was not honoring the config settings.</li>
 	<li>Fixed a bug that was making validation callbacks required even when not set as such.</li>
 	<li>Fixed a bug in the XML-RPC library so if a type is specified, a more intelligent decision is made as to the default type.</li>
 	<li>Fixed an example of comma-separated emails in the email library documentation.</li>
@@ -956,7 +956,7 @@
 	<li>Fixed a typo in the docblock comments that had CodeIgniter spelled CodeIgnitor.</li>
 	<li>Fixed a typo in the <a href="./helpers/string_helper.html">String Helper</a> (uniquid changed to uniqid).</li>
 	<li>Fixed typos in the email Language class (email_attachment_unredable, email_filed_smtp_login), and FTP Class (ftp_unable_to_remame).</li>
-	<li>Added a stripslashes()  into the Upload Library.</li>
+	<li>Added a stripslashes() into the Upload Library.</li>
 	<li>Fixed a series of grammatical and spelling errors in the language files.</li>
 	<li>Fixed assorted user guide typos.</li>
 </ul>
@@ -968,10 +968,10 @@
 	<li>Added array to string into the <a href="general/profiling.html">profiler</a>.</li>
 	<li>Added some additional mime types in application/config/mimes.php.</li>
 	<li>Added filename_security() method to <a href="./libraries/input.html">Input library</a>.</li>
-	<li>Added some additional arguments to the <a href="./helpers/inflector_helper.html">Inflection helper</a> singular() to compensate for words ending in "s".  Also added a force parameter to pluralize().</li>
-	<li>Added $config['charset'] to the config file.  Default value is 'UTF-8', used in some string handling functions.</li>
+	<li>Added some additional arguments to the <a href="./helpers/inflector_helper.html">Inflection helper</a> singular() to compensate for words ending in "s". Also added a force parameter to pluralize().</li>
+	<li>Added $config['charset'] to the config file. Default value is 'UTF-8', used in some string handling functions.</li>
 	<li>Fixed MSSQL insert_id().</li>
-	<li>Fixed a logic error in the DB trans_status() function.  It was incorrectly returning TRUE on failure and FALSE on success.</li>
+	<li>Fixed a logic error in the DB trans_status() function. It was incorrectly returning TRUE on failure and FALSE on success.</li>
 	<li>Fixed a bug that was allowing multiple load attempts on extended classes.</li>
 	<li>Fixed a bug in the bootstrap file that was incorrectly attempting to discern the full server path even when it was explicity set by the user.</li>
 	<li>Fixed a bug in the escape_str() function in the MySQL driver.</li>
@@ -987,7 +987,7 @@
 	<li>Fixed a bug where one could unset certain PHP superglobals by setting them via GET or POST data</li>
 	<li>Fixed an undefined function error in the insert_id() function of the PostgreSQL driver</li>
 	<li>Fixed various doc typos. </li>
-	<li>Documented two functions from the <a href="./helpers/string_helper.html">String helper </a> that were missing from the user guide:  trim_slashes() and reduce_double_slashes().</li>
+	<li>Documented two functions from the <a href="./helpers/string_helper.html">String helper </a> that were missing from the user guide: trim_slashes() and reduce_double_slashes().</li>
 	<li>Docs now validate to XHTML 1 transitional</li>
 	<li>Updated the XSS Filtering to take into account the IE expression() ability and improved certain deletions to prevent possible exploits</li>
 	<li>Modified the Router so that when Query Strings are Enabled, the controller trigger and function trigger values are sanitized for filename include security.</li>
@@ -995,7 +995,7 @@
 	<li>Modified XSS Cleaning routine to be more performance friendly and compatible with PHP 5.2's new PCRE backtrack and recursion limits.</li>
 	<li>Modified the <a href="./helpers/url_helper.html">URL Helper</a> to type cast the $title as a string in case a numeric value is supplied</li>
 	<li>Modified Form Helper form_dropdown() to type cast the keys and values of the options array as strings, allowing numeric values to be properly set as 'selected'</li>
-	<li>Deprecated the use if <kbd>is_numeric()</kbd> in various places since it allows periods.  Due to compatibility problems with <kbd>ctype_digit()</kbd>, making it unreliable in some installations, the following regular expression was used instead:  <kbd>preg_match("/[^0-9]/", $n)</kbd></li>
+	<li>Deprecated the use if <kbd>is_numeric()</kbd> in various places since it allows periods. Due to compatibility problems with <kbd>ctype_digit()</kbd>, making it unreliable in some installations, the following regular expression was used instead: <kbd>preg_match("/[^0-9]/", $n)</kbd></li>
 	<li>Deprecated: APPVER has been deprecated and replaced with CI_VERSION for clarity. </li>
 </ul>
 <h2>Version 1.5.3</h2>
@@ -1021,7 +1021,7 @@
 	<li>Fixed a bug in the <a href="./helpers/download_helper.html">download_helper</a> that was causing Internet Explorer to load rather than download </li>
 	<li>Fixed a bug in the Active Record Join function that was not taking table prefixes into consideration.</li>
 	<li>Removed unescaped variables in error messages of Input and Router classes</li>
-	<li>Fixed a bug in the Loader that was causing errors on Libraries loaded twice. A debug message is now silently made in the log.  </li>
+	<li>Fixed a bug in the Loader that was causing errors on Libraries loaded twice. A debug message is now silently made in the log. </li>
 	<li>Fixed a bug in the <a href="./helpers/form_helper.html">form helper</a> that gave textarea a value attribute </li>
 	<li>Fixed a bug in the <a href="./libraries/image_lib.php">Image Library</a> that was ignoring resizing the same size image </li>
 	<li>Fixed some doc typos.</li>
@@ -1074,10 +1074,10 @@
 <li>Added <a href="./database/results.html">$query->free_result()</a> to database class.</li>
 <li>Added <a href="./database/fields.html">$query->list_fields()</a> function to database class</li>
 <li>Added <a href="./database/helpers.html">$this->db->platform()</a> function</li>
-<li>Added new <a href="./helpers/file_helper.html">File Helper</a>:  get_filenames()</li>
-<li>Added new helper:  <a href="./helpers/smiley_helper.html">Smiley Helper</a></li>
-<li>Added support for &lt;ul> and &lt;ol> lists in the  <a href="./helpers/html_helper.html">HTML Helper</a></li>
-<li>Added the ability to rewrite <a href="./general/alternative_php.html">short tags</a> on-the-fly, converting them to standard PHP statements, for those servers that do not support short tags.  This allows the cleaner syntax to be used regardless of whether it's supported by the server.</li>
+<li>Added new <a href="./helpers/file_helper.html">File Helper</a>: get_filenames()</li>
+<li>Added new helper: <a href="./helpers/smiley_helper.html">Smiley Helper</a></li>
+<li>Added support for &lt;ul> and &lt;ol> lists in the <a href="./helpers/html_helper.html">HTML Helper</a></li>
+<li>Added the ability to rewrite <a href="./general/alternative_php.html">short tags</a> on-the-fly, converting them to standard PHP statements, for those servers that do not support short tags. This allows the cleaner syntax to be used regardless of whether it's supported by the server.</li>
 <li>Added the ability to <a href="./general/managing_apps.html">rename or relocate the "application" folder</a>.</li>
 <li>Added more thorough initialization in the upload class so that all class variables are reset.</li>
 <li>Added "is_numeric" to validation, which uses the native PHP is_numeric function.</li>
@@ -1085,7 +1085,7 @@
 <li>Moved most of the functions in the Controller class into the Loader class, allowing fewer reserved function names for controllers when running under PHP 5.</li>
 <li>Updated the DB Result class to return an empty array when $query->result() doesn't produce a result.</li>
 <li>Updated the <dfn>input->cookie()</dfn> and <dfn>input->post()</dfn> functions in <a href="./libraries/input.html">Input Class</a> to permit arrays contained cookies that are arrays to be run through the XSS filter.</li>
-<li>Documented three functions from the <a href="./libraries/validation.html">Validation class</a> that were missing from the user guide:  set_select(), set_radio(), and set_checkbox().</li>
+<li>Documented three functions from the <a href="./libraries/validation.html">Validation class</a> that were missing from the user guide: set_select(), set_radio(), and set_checkbox().</li>
 <li>Fixed a bug in the Email class related to SMTP Helo data.</li>
 <li>Fixed a bug in the word wrapping helper and function in the email class.</li>
 <li>Fixed a bug in the validation class.</li>
@@ -1096,9 +1096,9 @@
 <li>Fixed a pagination bug that was permitting negative values in the URL.</li>
 <li>Fixed an oversight in which the Loader class was not allowed to be extended.</li>
 <li>Changed <dfn>_get_config()</dfn> to <dfn>get_config()</dfn> since the function is not a private one.</li>
-<li><strong>Deprecated "init" folder</strong>.  Initialization happens automatically now.  <a href="./general/creating_libraries.html">Please see documentation</a>.</li>
-<li><strong>Deprecated</strong> $this->db->field_names()  USE  $this->db->list_fields()</li>
-<li><strong>Deprecated</strong> the <dfn>$config['log_errors']</dfn> item from the config.php file.  Instead, <dfn>$config['log_threshold']</dfn> can be set to "0" to turn it off.</li>
+<li><strong>Deprecated "init" folder</strong>. Initialization happens automatically now. <a href="./general/creating_libraries.html">Please see documentation</a>.</li>
+<li><strong>Deprecated</strong> $this->db->field_names() USE $this->db->list_fields()</li>
+<li><strong>Deprecated</strong> the <dfn>$config['log_errors']</dfn> item from the config.php file. Instead, <dfn>$config['log_threshold']</dfn> can be set to "0" to turn it off.</li>
 </ul>
 
 
@@ -1109,10 +1109,10 @@
 
 <ul>
 <li>Added a new feature that passes URI segments directly to your function calls as parameters. See the <a href="./general/controllers.html">Controllers</a> page for more info.</li>
-<li>Added support for a function named <dfn>_output()</dfn>, which when used in your controllers will received the final rendered output from the output class.  More info in the <a href="controllers.html">Controllers</a> page.</li>
+<li>Added support for a function named <dfn>_output()</dfn>, which when used in your controllers will received the final rendered output from the output class. More info in the <a href="controllers.html">Controllers</a> page.</li>
 <li>Added several new functions in the <a href="./libraries/uri.html">URI Class</a> to let you retrieve and manipulate URI segments that have been re-routed using the <a href="routing.html">URI Routing</a> feature. Previously, the URI class did not permit you to access any re-routed URI segments, but now it does.</li>
 <li>Added <a href="./libraries/output.html">$this->output->set_header()</a> function, which allows you to set server headers.</li>
-<li>Updated plugins, helpers, and language classes to allow your <dfn>application</dfn> folder to contain its own plugins, helpers, and language folders.  Previously they were always treated as global for your entire installation.  If your application folder contains any of these resources they will be used <em>instead</em> the global ones.</li>
+<li>Updated plugins, helpers, and language classes to allow your <dfn>application</dfn> folder to contain its own plugins, helpers, and language folders. Previously they were always treated as global for your entire installation. If your application folder contains any of these resources they will be used <em>instead</em> the global ones.</li>
 <li>Added <a href="./helpers/inflector_helper.html">Inflector helper</a>.</li>
 <li>Added <dfn>element()</dfn> function in the <a href="./helpers/array_helper.html">array helper</a>.</li>
 <li>Added <dfn>RAND()</dfn> to active record <dfn>orderby()</dfn> function.</li>
@@ -1128,8 +1128,8 @@
 <li>Fixed an oversight in the upload class. An item mentioned in the 1.4 changelog was missing.</li>
 <li>Added some code to allow email attachments to be reset when sending batches of email.</li>
 <li>Deprecated the <dfn>application/scripts</dfn> folder. It will continue to work for legacy users, but it is recommended that you create your own
-<a href="./general/libraries.html">libraries</a> or <a href="./general/models.html">models</a> instead.  It was originally added before CI had user libraries or models, but it's not needed anymore.</li>
-<li>Deprecated the <dfn>$autoload['core']</dfn> item from the <kbd>autoload.php</kbd> file.  Instead, please now use: <kbd>$autoload['libraries']</kbd></li>
+<a href="./general/libraries.html">libraries</a> or <a href="./general/models.html">models</a> instead. It was originally added before CI had user libraries or models, but it's not needed anymore.</li>
+<li>Deprecated the <dfn>$autoload['core']</dfn> item from the <kbd>autoload.php</kbd> file. Instead, please now use: <kbd>$autoload['libraries']</kbd></li>
 <li>Deprecated the following database functions: $this->db->smart_escape_str() and $this->db->fields().</li>
 </ul>
 
@@ -1140,7 +1140,7 @@
 
 <ul>
 <li>Added <a href="./general/hooks.html">Hooks</a> feature, enabling you to tap into and modify the inner workings of the framework without hacking the core files.</li>
-<li>Added the ability to organize controller files <a href="./general/controllers.html">into sub-folders</a>.  Kudos to Marco for <a href="http://codeigniter.com/forums/viewthread/627/">suggesting</a> this (and the next two) feature.</li>
+<li>Added the ability to organize controller files <a href="./general/controllers.html">into sub-folders</a>. Kudos to Marco for <a href="http://codeigniter.com/forums/viewthread/627/">suggesting</a> this (and the next two) feature.</li>
 <li>Added regular expressions support for <a href="./general/routing.html">routing rules</a>.</li>
 <li>Added the ability to <a href="./general/controllers.html">remap function calls</a> within your controllers.</li>
 <li>Added the ability to <a href="./general/core_classes.html">replace core system classes</a> with your own classes.</li>
@@ -1155,7 +1155,7 @@
 <li>Updated the URI Protocol code to allow more options so that URLs will work more reliably in different environments.</li>
 <li>Updated the <dfn>form_open()</dfn> helper to allow the GET method to be used.</li>
 <li>Updated the MySQLi <dfn>execute()</dfn> function with some code to help prevent lost connection errors.</li>
-<li>Updated the SQLite Driver to check for object support before attempting to return results as objects.  If unsupported it returns an array.</li>
+<li>Updated the SQLite Driver to check for object support before attempting to return results as objects. If unsupported it returns an array.</li>
 <li>Updated the Models loader function to allow multiple loads of the same model.</li>
 <li>Updated the MS SQL driver so that single quotes are escaped.</li>
 <li>Updated the Postgres and ODBC drivers for better compatibility.</li>
@@ -1163,7 +1163,7 @@
 <li>Removed some references that were interfering with PHP 4.4.1 compatibility.</li>
 <li>Removed backticks from Postgres class since these are not needed.</li>
 <li>Renamed <dfn>display()</dfn> to <dfn>_display()</dfn> in the Output class to make it clear that it's a private function.</li>
-<li>Deprecated the hash() function due to a naming conflict with a native PHP function with the same name.  Please use <kbd>dohash()</kbd> instead.</li>
+<li>Deprecated the hash() function due to a naming conflict with a native PHP function with the same name. Please use <kbd>dohash()</kbd> instead.</li>
 <li>Fixed an bug that was preventing the input class from unsetting GET variables.</li>
 <li>Fixed a router bug that was making it too greedy when matching end segments.</li>
 <li>Fixed a bug that was preventing multiple discrete database calls.</li>
@@ -1197,11 +1197,11 @@
 <ul>
 
 <li>Models do <strong>not</strong> connect automatically to the database as of this version. <a href="./general/models.html">More info here</a>.</li>
-<li>Updated the Sessions class to utilize the active record class when running session related queries.  Previously the queries assumed MySQL syntax.</li>
+<li>Updated the Sessions class to utilize the active record class when running session related queries. Previously the queries assumed MySQL syntax.</li>
 <li>Updated alternator() function to re-initialize when called with no arguments, allowing multiple calls.</li>
 <li>Fixed a bug in the active record "having" function.</li>
 <li>Fixed a problem in the validation class which was making checkboxes be ignored when required.</li>
-<li>Fixed a bug in the word_limiter() helper function.  It was cutting off the fist word.</li>
+<li>Fixed a bug in the word_limiter() helper function. It was cutting off the fist word.</li>
 <li>Fixed a bug in the xss_clean function due to a PHP bug that affects some versions of html_entity_decode.</li>
 <li>Fixed a validation bug that was preventing rules from being set twice in one controller.</li>
 <li>Fixed a calendar bug that was not letting it use dynamically loaded languages.</li>
@@ -1219,7 +1219,7 @@
 <ul>
 <li>Changed the behavior of the validation class such that if a "required" rule is NOT explicitly stated for a field then all other tests get ignored.</li>
 <li>Fixed a bug in the Controller class that was causing it to look in the local "init" folder instead of the main system one.</li>
-<li>Fixed a bug in the init_pagination file.  The $config item was not being set correctly.</li>
+<li>Fixed a bug in the init_pagination file. The $config item was not being set correctly.</li>
 <li>Fixed a bug in the auto typography helper that was causing inconsistent behavior.</li>
 <li>Fixed a couple bugs in the Model class.</li>
 <li>Fixed some documentation typos and errata.</li>
@@ -1232,8 +1232,8 @@
 
 <ul>
 <li>Added a <a href="./libraries/unit_testing.html">Unit Testing Library</a>.</li>
-<li>Added the ability to pass objects to the <strong>insert()</strong> and <strong>update()</strong>  database functions.
-This feature enables you to (among other things) use your  <a href="./general/models.html">Model class</a> variables to run queries with. See the Models page for details.</li>
+<li>Added the ability to pass objects to the <strong>insert()</strong> and <strong>update()</strong> database functions.
+This feature enables you to (among other things) use your <a href="./general/models.html">Model class</a> variables to run queries with. See the Models page for details.</li>
 <li>Added the ability to pass objects to the <a href="./general/views.html">view loading function</a>: $this->load->view('my_view', <var>$object</var>);</li>
 <li>Added <kbd>getwhere</kbd> function to <a href="./database/active_record.html">Active Record class</a>.</li>
 <li>Added <kbd>count_all</kbd> function to <a href="./database/active_record.html">Active Record class</a>.</li>
@@ -1257,10 +1257,10 @@
 <li>Redesigned the database libraries to support additional RDBMs (Postgres, MySQLi, etc.).</li>
 <li>Redesigned the <a href="./database/active_record.html">Active Record class</a> to enable more varied types of queries with simpler syntax, and advanced features like JOINs.</li>
 <li>Added a feature to the database class that lets you run <a href="./database/call_function.html">custom function calls</a>.</li>
-<li>Added support for <a href="controllers.html">private functions</a> in your controllers.  Any controller function name that starts with an underscore will not be served by a URI request.</li>
+<li>Added support for <a href="controllers.html">private functions</a> in your controllers. Any controller function name that starts with an underscore will not be served by a URI request.</li>
 <li>Added the ability to pass your own initialization parameters to your <a href="creating_libraries.html">custom core libraries</a> when using $this->load->library()</li>
-<li>Added support for running standard <a href="urls.html">query string URLs</a>.  These can be optionally enabled in your config file.</li>
-<li>Added the ability to  <a href="urls.html">specify a "suffix"</a>, which will be appended to your URLs.  For example, you could add .html to your URLs, making them appear static. This feature is enabled in your config file.</li>
+<li>Added support for running standard <a href="urls.html">query string URLs</a>. These can be optionally enabled in your config file.</li>
+<li>Added the ability to <a href="urls.html">specify a "suffix"</a>, which will be appended to your URLs. For example, you could add .html to your URLs, making them appear static. This feature is enabled in your config file.</li>
 <li>Added a new error template for use with native PHP errors.</li>
 <li>Added "alternator" function in the <a href="./helpers/string_helper.html">string helpers</a>.</li>
 <li>Removed slashing from the input class. After much debate we decided to kill this feature.</li>
@@ -1271,7 +1271,7 @@
 <li>Deprecated: <var>$this->db->use_table()</var> has been deprecated. Please read the <a href="./database/active_record.html">Active Record</a> page for information.</li>
 <li>Deprecated: <var>$this->db->smart_escape_str()</var> has been deprecated. Please use this instead: <var>$this->db->escape()</var></li>
 <li>Fixed a bug in the exception handler which was preventing some PHP errors from showing up.</li>
-<li>Fixed a typo in the URI class.  $this->total_segment() should be plural: $this->total_segments()</li>
+<li>Fixed a typo in the URI class. $this->total_segment() should be plural: $this->total_segments()</li>
 <li>Fixed some typos in the default calendar template</li>
 <li>Fixed some typos in the user guide</li>
 </ul>
@@ -1289,12 +1289,12 @@
 <ul>
 <li>Redesigned some internal aspects of the framework to resolve scoping problems that surfaced during the beta tests. The problem was most notable when instantiating classes in your constructors, particularly if those classes in turn did work in their constructors.</li>
 <li>Added a global function named <a href="ancillary_classes.html">get_instance()</a> allowing the main CodeIgniter object to be accessible throughout your own classes.</li>
-<li>Added new <a href="./helpers/file_helper.html">File Helper</a>:  delete_files()</li>
-<li>Added new <a href="./helpers/url_helper.html">URL Helpers</a>:  base_url(), index_page()</li>
+<li>Added new <a href="./helpers/file_helper.html">File Helper</a>: delete_files()</li>
+<li>Added new <a href="./helpers/url_helper.html">URL Helpers</a>: base_url(), index_page()</li>
 <li>Added the ability to create your own <a href="creating_libraries.html">core libraries</a> and store them in your local application directory.</li>
 <li>Added an <kbd>overwrite</kbd> option to the <a href="./libraries/file_uploading.html">Upload class</a>, enabling files to be overwritten rather than having the file name appended.</li>
 <li>Added Javascript Calendar plugin.</li>
-<li>Added search feature to user guide.  Note: This is done using Google, which at the time of this writing has not crawled all the pages of the docs.</li>
+<li>Added search feature to user guide. Note: This is done using Google, which at the time of this writing has not crawled all the pages of the docs.</li>
 <li>Updated the parser class so that it allows tag pars within other tag pairs.</li>
 <li>Fixed a bug in the DB "where" function.</li>
 <li>Fixed a bug that was preventing custom config files to be auto-loaded.</li>
diff --git a/user_guide/database/active_record.html b/user_guide/database/active_record.html
index 6283381..566b260 100644
--- a/user_guide/database/active_record.html
+++ b/user_guide/database/active_record.html
@@ -59,12 +59,12 @@
 <p>CodeIgniter uses a modified version of the Active Record Database Pattern.
 This pattern allows information to be retrieved, inserted, and updated in your database with minimal scripting.
 In some cases only one or two lines of code are necessary to perform a database action.
-CodeIgniter does not require that each database table be its own class file.  It instead provides a more simplified interface.</p>
+CodeIgniter does not require that each database table be its own class file. It instead provides a more simplified interface.</p>
 
 <p>Beyond simplicity, a major benefit to using the Active Record features is that it allows you to create database independent applications, since the query syntax
-is generated by each database adapter.  It also allows for safer queries, since the values are escaped automatically by the system.</p>
+is generated by each database adapter. It also allows for safer queries, since the values are escaped automatically by the system.</p>
 
-<p class="important"><strong>Note:</strong>  If you intend to write your own queries you can disable this class in your database config file, allowing the core database library and adapter to utilize fewer resources.<br /></p>
+<p class="important"><strong>Note:</strong> If you intend to write your own queries you can disable this class in your database config file, allowing the core database library and adapter to utilize fewer resources.<br /></p>
 
 <ul>
 <li><a href="#select">Selecting Data</a></li>
@@ -84,7 +84,7 @@
 
 <h2>$this->db->get();</h2>
 
-<p>Runs the selection query and returns the result.  Can be used by itself to retrieve all records from a table:</p>
+<p>Runs the selection query and returns the result. Can be used by itself to retrieve all records from a table:</p>
 
 <code>$query = $this->db->get('mytable');<br />
 <br />
@@ -126,7 +126,7 @@
 $query = $this->db->get('mytable');<br />
 <br />
 // Produces: SELECT title, content, date FROM mytable</code></p>
-<p class="important"><strong>Note:</strong> If you are selecting all (*) from a table you do not need to use this function.  When omitted, CodeIgniter assumes you wish to SELECT *</p>
+<p class="important"><strong>Note:</strong> If you are selecting all (*) from a table you do not need to use this function. When omitted, CodeIgniter assumes you wish to SELECT *</p>
 
 <p>$this-&gt;db-&gt;select() accepts an optional second parameter. If you set it to FALSE, CodeIgniter will not try to protect your field or table names with backticks. This is useful if you need a compound select statement.</p>
 <p><code>$this-&gt;db-&gt;select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE); <br />
@@ -278,7 +278,7 @@
 
 
 <h2>$this->db->where_in();</h2>
-<p>Generates a WHERE field IN ('item', 'item') SQL query joined with  AND if appropriate</p>
+<p>Generates a WHERE field IN ('item', 'item') SQL query joined with AND if appropriate</p>
 <p><code>
 	$names = array('Frank', 'Todd', 'James');<br />
 	$this->db->where_in('username', $names);<br />
@@ -322,7 +322,7 @@
 	<code>$this->db->like('title', 'match');<br />
 	$this->db->like('body', 'match');
 	<br /><br />
-	// WHERE title LIKE '%match%' AND  body LIKE '%match%</code>
+	// WHERE title LIKE '%match%' AND body LIKE '%match%</code>
 	If you want to control where the wildcard (%) is placed, you can use an optional third argument. Your options are 'before', 'after' and 'both' (which is the default).
 	<code>$this->db->like('title', 'match', 'before');
 	<br />
@@ -340,7 +340,7 @@
 	$array = array('title' => $match, 'page1' => $match, 'page2' => $match);<br /><br />
 
 	$this->db->like($array);
-	<br /><br />// WHERE title LIKE '%match%' AND  page1 LIKE '%match%' AND  page2 LIKE '%match%'</code></li>
+	<br /><br />// WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%'</code></li>
 	</ol>
 
 
@@ -351,7 +351,7 @@
 $this->db->like('title', 'match');<br />
 $this->db->or_like('body', $match);
 <br />
-<br />// WHERE title LIKE '%match%' OR  body LIKE '%match%'</code>
+<br />// WHERE title LIKE '%match%' OR body LIKE '%match%'</code>
 
 
 
@@ -367,7 +367,7 @@
 <code> $this-&gt;db-&gt;like('title', 'match');<br />
 $this-&gt;db-&gt;or_not_like('body', 'match'); <br />
 <br />
-// WHERE title  LIKE '%match% OR body NOT LIKE '%match%'</code>
+// WHERE title LIKE '%match% OR body NOT LIKE '%match%'</code>
 <h2>$this->db->group_by();</h2>
 <p>Permits you to write the GROUP BY portion of your query:</p>
 
@@ -385,7 +385,7 @@
 
 <h2> $this-&gt;db-&gt;distinct();<br />
 </h2>
-<p>Adds the &quot;DISTINCT&quot; keyword to  a query</p>
+<p>Adds the &quot;DISTINCT&quot; keyword to a query</p>
 <p><code>$this-&gt;db-&gt;distinct();<br />
 	$this-&gt;db-&gt;get('table');<br />
 		<br />
@@ -397,7 +397,7 @@
 <br />
 // Produces: HAVING user_id = 45<br />
 <br />
-$this-&gt;db-&gt;having('user_id',  45); <br />
+$this-&gt;db-&gt;having('user_id', 45); <br />
 // Produces: HAVING user_id = 45<br />
 <br />
 </code>
@@ -409,16 +409,16 @@
 		<br />
 	// Produces: HAVING title = 'My Title', id < 45</code></p>
 <p>If you are using a database that CodeIgniter escapes queries for, you can prevent escaping content by passing an optional third argument, and setting it to FALSE.</p>
-<p><code>$this-&gt;db-&gt;having('user_id',  45); <br />
+<p><code>$this-&gt;db-&gt;having('user_id', 45); <br />
 // Produces: HAVING `user_id` = 45 in some databases such as MySQL
 		<br />
-		$this-&gt;db-&gt;having('user_id',  45, FALSE); <br />
+		$this-&gt;db-&gt;having('user_id', 45, FALSE); <br />
 // Produces: HAVING user_id = 45</code></p>
 <h2>$this-&gt;db-&gt;or_having();</h2>
 <p>Identical to having(), only separates multiple clauses with &quot;OR&quot;.</p>
 <h2>$this->db->order_by();</h2>
 <p>Lets you set an ORDER BY clause. The first parameter contains the name of the column you would like to order by.
-The second parameter lets you set the direction of the result.  Options are <kbd>asc</kbd> or <kbd>desc</kbd>, or <kbd>random</kbd>. </p>
+The second parameter lets you set the direction of the result. Options are <kbd>asc</kbd> or <kbd>desc</kbd>, or <kbd>random</kbd>. </p>
 
 <code>$this->db->order_by("title", "desc");
 <br />
@@ -455,12 +455,12 @@
 <code>
 $this->db->limit(10, 20);<br />
 <br />
-// Produces: LIMIT 20, 10 (in MySQL.  Other databases have slightly different syntax)</code>
+// Produces: LIMIT 20, 10 (in MySQL. Other databases have slightly different syntax)</code>
 
 
 <h2>$this->db->count_all_results();</h2>
 
-<p>Permits you to determine the number of rows in a particular Active Record query. Queries will accept Active Record restrictors such as where(),  or_where(), like(), or_like(), etc. Example:</p>
+<p>Permits you to determine the number of rows in a particular Active Record query. Queries will accept Active Record restrictors such as where(), or_where(), like(), or_like(), etc. Example:</p>
 <code>echo $this->db->count_all_results('<var>my_table</var>');<br />
 
 // Produces an integer, like 25<br />
@@ -472,7 +472,7 @@
 
 <h2>$this->db->count_all();</h2>
 
-<p>Permits you to determine the number of rows in a particular table.  Submit the table name in the first parameter. Example:</p>
+<p>Permits you to determine the number of rows in a particular table. Submit the table name in the first parameter. Example:</p>
 
 <code>echo $this->db->count_all('<var>my_table</var>');<br />
 <br />
@@ -485,7 +485,7 @@
 
 <h2>$this->db->insert();</h2>
 <p>Generates an insert string based on the data you supply, and runs the query. You can either pass an
-<strong>array</strong> or an <strong>object</strong> to the function.  Here is an example using an array:</p>
+<strong>array</strong> or an <strong>object</strong> to the function. Here is an example using an array:</p>
 
 <code>
 $data = array(<br />
@@ -505,9 +505,9 @@
 <code>
 /*<br />
 &nbsp;&nbsp;&nbsp;&nbsp;class Myclass {<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $title = 'My Title';<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $content = 'My Content';<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $date = 'My Date';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $title = 'My Title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $content = 'My Content';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $date = 'My Date';<br />
 &nbsp;&nbsp;&nbsp;&nbsp;}<br />
 */<br />
 <br />
@@ -523,7 +523,7 @@
 
 <h2>$this->db->insert_batch();</h2>
 <p>Generates an insert string based on the data you supply, and runs the query. You can either pass an
-<strong>array</strong> or an <strong>object</strong> to the function.  Here is an example using an array:</p>
+<strong>array</strong> or an <strong>object</strong> to the function. Here is an example using an array:</p>
 
 <code>
 $data = array(<br/>
@@ -541,7 +541,7 @@
 <br />
 $this->db->update_batch('mytable', $data);
 <br /><br />
-// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')</code>
+// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')</code>
 
 <p>The first parameter will contain the table name, the second is an associative array of values.</p>
 
@@ -588,9 +588,9 @@
 <code>
 /*<br />
 &nbsp;&nbsp;&nbsp;&nbsp;class Myclass {<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $title = 'My Title';<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $content = 'My Content';<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $date = 'My Date';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $title = 'My Title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $content = 'My Content';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $date = 'My Date';<br />
 &nbsp;&nbsp;&nbsp;&nbsp;}<br />
 */<br />
 <br />
@@ -606,7 +606,7 @@
 <h1>Updating Data</h1>
 
 <h2>$this->db->update();</h2>
-<p>Generates an update string and runs the query based on the data you supply.  You can pass an
+<p>Generates an update string and runs the query based on the data you supply. You can pass an
 <strong>array</strong> or an <strong>object</strong> to the function. Here is an example using
 an array:</p>
 
@@ -630,9 +630,9 @@
 <code>
 /*<br />
 &nbsp;&nbsp;&nbsp;&nbsp;class Myclass {<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $title = 'My Title';<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $content = 'My Content';<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $date = 'My Date';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $title = 'My Title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $content = 'My Content';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $date = 'My Date';<br />
 &nbsp;&nbsp;&nbsp;&nbsp;}<br />
 */<br />
 <br />
@@ -711,7 +711,7 @@
 
 <h1><a name="chaining">&nbsp;</a>Method Chaining</h1>
 
-<p>Method chaining allows you to simplify your syntax by connecting multiple functions.  Consider this example:</p>
+<p>Method chaining allows you to simplify your syntax by connecting multiple functions. Consider this example:</p>
 
 <code>
 <dfn>$this->db</dfn><kbd>-></kbd><var>select</var>('title')<kbd>-></kbd><var>from</var>('mytable')<kbd>-></kbd><var>where</var>('id', $id)<kbd>-></kbd><var>limit</var>(10, 20);<br />
@@ -752,14 +752,14 @@
 $this-&gt;db-&gt;select('field2');<br />
 $this-&gt;db-&gt;get('tablename');<br />
 <br />
-//Generates:  SELECT `field1`, `field2` FROM (`tablename`)<br />
+//Generates: SELECT `field1`, `field2` FROM (`tablename`)<br />
 <br />
 $this-&gt;db-&gt;flush_cache();<br />
 <br />
 $this-&gt;db-&gt;select('field2');<br />
 $this-&gt;db-&gt;get('tablename');<br />
 <br />
-//Generates:  SELECT `field2` FROM (`tablename`)</code></p>
+//Generates: SELECT `field2` FROM (`tablename`)</code></p>
 
 <p class="important"> <strong>Note:</strong> The following statements can be cached: select, from, join, where, like, group_by, having, order_by, set</p>
 <p>&nbsp;</p>
diff --git a/user_guide/database/caching.html b/user_guide/database/caching.html
index 3f4ef2b..76a9121 100644
--- a/user_guide/database/caching.html
+++ b/user_guide/database/caching.html
@@ -62,7 +62,7 @@
 <p>The Database Caching Class permits you to cache your queries as text files for reduced database load.</p>
 
 <p class="important"><strong>Important:</strong>&nbsp; This class is initialized automatically by the database driver
-when caching is enabled.  Do NOT load this class manually.<br /><br />
+when caching is enabled. Do NOT load this class manually.<br /><br />
 
 <strong>Also note:</strong>&nbsp; Not all query result functions are available when you use caching. Please read this page carefully.</p>
 
@@ -84,12 +84,12 @@
 <p>CodeIgniter's query caching system happens dynamically when your pages are viewed.
 When caching is enabled, the first time a web page is loaded, the query result object will
 be serialized and stored in a text file on your server. The next time the page is loaded the cache file will be used instead of
-accessing your database.  Your database usage can effectively be reduced to zero for any pages that have been cached.</p>
+accessing your database. Your database usage can effectively be reduced to zero for any pages that have been cached.</p>
 
 <p>Only <dfn>read-type</dfn> (SELECT) queries can be cached, since these are the only type of queries that produce a result.
 <dfn>Write-type</dfn> (INSERT, UPDATE, etc.) queries, since they don't generate a result, will not be cached by the system.</p>
 
-<p>Cache files DO NOT expire.  Any queries that have been cached will remain cached until you delete them.  The caching system
+<p>Cache files DO NOT expire. Any queries that have been cached will remain cached until you delete them. The caching system
 permits you clear caches associated with individual pages, or you can delete the entire collection of cache files.
 Typically you'll want to use the housekeeping functions described below to delete cache files after certain
 events take place, like when you've added new information to your database.</p>
@@ -99,33 +99,33 @@
 <p>Getting a performance gain as a result of caching depends on many factors.
 If you have a highly optimized database under very little load, you probably won't see a performance boost.
 If your database is under heavy use you probably will see an improved response, assuming your file-system is not
-overly taxed.  Remember that caching simply changes how your information is retrieved, shifting it from being a database
+overly taxed. Remember that caching simply changes how your information is retrieved, shifting it from being a database
 operation to a file-system one.</p>
 
 <p>In some clustered server environments, for example, caching may be detrimental since file-system operations are so intense.
 On single servers in shared environments, caching will probably be beneficial. Unfortunately there is no
-single answer to the question of whether you should cache your database.  It really depends on your situation.</p>
+single answer to the question of whether you should cache your database. It really depends on your situation.</p>
 
 <h2>How are Cache Files Stored?</h2>
 
-<p>CodeIgniter places the result of EACH query into its own cache file.  Sets of cache files are further organized into
-sub-folders corresponding to your controller functions.  To be precise, the sub-folders are named identically to the
+<p>CodeIgniter places the result of EACH query into its own cache file. Sets of cache files are further organized into
+sub-folders corresponding to your controller functions. To be precise, the sub-folders are named identically to the
 first two segments of your URI (the controller class name and function name).</p>
 
 <p>For example, let's say you have a controller called <dfn>blog</dfn> with a function called <dfn>comments</dfn> that
-contains three queries.  The caching system will create a cache folder
+contains three queries. The caching system will create a cache folder
 called <kbd>blog+comments</kbd>, into which it will write three cache files.</p>
 
 <p>If you use dynamic queries that change based on information in your URI (when using pagination, for example), each instance of
-the query will produce its own cache file.  It's possible, therefore, to end up with many times more cache files than you have
+the query will produce its own cache file. It's possible, therefore, to end up with many times more cache files than you have
 queries.</p>
 
 
 <h2>Managing your Cache Files</h2>
 
-<p>Since cache files do not expire, you'll need to build deletion routines into your application.  For example, let's say you have a blog
-that allows user commenting.  Whenever a new comment is submitted you'll want to delete the cache files associated with the
-controller function that serves up your comments.  You'll find two delete functions described below that help you
+<p>Since cache files do not expire, you'll need to build deletion routines into your application. For example, let's say you have a blog
+that allows user commenting. Whenever a new comment is submitted you'll want to delete the cache files associated with the
+controller function that serves up your comments. You'll find two delete functions described below that help you
 clear data.</p>
 
 
@@ -155,8 +155,8 @@
 
 <h2>$this->db->cache_on()&nbsp; / &nbsp; $this->db->cache_off()</h2>
 
-<p>Manually enables/disables caching.  This can be useful if you want to
-keep certain queries from being cached.  Example:</p>
+<p>Manually enables/disables caching. This can be useful if you want to
+keep certain queries from being cached. Example:</p>
 
 <code>
 // Turn caching on<br />
@@ -177,9 +177,9 @@
 
 <p>Deletes the cache files associated with a particular page. This is useful if you need to clear caching after you update your database.</p>
 
-<p>The caching system saves your cache files to folders that correspond to the URI of the page you are viewing.  For example, if you are viewing
+<p>The caching system saves your cache files to folders that correspond to the URI of the page you are viewing. For example, if you are viewing
 a page at <dfn>example.com/index.php/blog/comments</dfn>, the caching system will put all cache files associated with it in a folder
-called <dfn>blog+comments</dfn>.  To delete those particular cache files you will use:</p>
+called <dfn>blog+comments</dfn>. To delete those particular cache files you will use:</p>
 
 <code>$this->db->cache_delete('blog', 'comments');</code>
 
@@ -188,7 +188,7 @@
 
 <h2>$this->db->cache_delete_all()</h2>
 
-<p>Clears all existing cache files.  Example:</p>
+<p>Clears all existing cache files. Example:</p>
 
 <code>$this->db->cache_delete_all();</code>
 
diff --git a/user_guide/database/call_function.html b/user_guide/database/call_function.html
index 3e0c78d..7f29440 100644
--- a/user_guide/database/call_function.html
+++ b/user_guide/database/call_function.html
@@ -63,13 +63,13 @@
 
 <p>This function enables you to call PHP database functions that are not natively included in CodeIgniter, in a platform independent manner.
 For example, lets say you want to call the <dfn>mysql_get_client_info()</dfn> function, which is <strong>not</strong> natively supported
-by CodeIgniter.  You could do so like this:
+by CodeIgniter. You could do so like this:
 </p>
 
 <code>$this->db->call_function('<var>get_client_info</var>');</code>
 
-<p>You must supply the name of the function, <strong>without</strong> the <var>mysql_</var> prefix, in the first parameter.  The prefix is added
-automatically based on which database driver is currently being used.  This permits you to run the same function on different database platforms.
+<p>You must supply the name of the function, <strong>without</strong> the <var>mysql_</var> prefix, in the first parameter. The prefix is added
+automatically based on which database driver is currently being used. This permits you to run the same function on different database platforms.
 Obviously not all function calls are identical between platforms, so there are limits to how useful this function can be in terms of portability.</p>
 
 <p>Any parameters needed by the function you are calling will be added to the second parameter.</p>
@@ -77,7 +77,7 @@
 <code>$this->db->call_function('<var>some_function</var>', $param1, $param2, etc..);</code>
 
 
-<p>Often, you will either need to supply a database connection ID or a database result ID.  The connection ID can be accessed using:</p>
+<p>Often, you will either need to supply a database connection ID or a database result ID. The connection ID can be accessed using:</p>
 
 <code>$this->db->conn_id;</code>
 
diff --git a/user_guide/database/configuration.html b/user_guide/database/configuration.html
index 51d11c9..b347054 100644
--- a/user_guide/database/configuration.html
+++ b/user_guide/database/configuration.html
@@ -74,7 +74,7 @@
 $db['default']['pconnect'] = TRUE;<br />
 $db['default']['db_debug'] = FALSE;<br />
 $db['default']['cache_on'] = FALSE;<br />
-$db['default']['cachedir'] =  &quot;&quot;;<br />
+$db['default']['cachedir'] = &quot;&quot;;<br />
 $db['default']['char_set'] = "utf8";<br />
 $db['default']['dbcollat'] = "utf8_general_ci";<br />
 $db['default']['swap_pre'] = "";<br />
@@ -82,7 +82,7 @@
 $db['default']['stricton'] = FALSE;</code>
 
 <p>The reason we use a multi-dimensional array rather than a more simple one is to permit you to optionally store
-multiple sets of connection values.  If, for example,  you run multiple environments (development, production, test, etc.)
+multiple sets of connection values. If, for example, you run multiple environments (development, production, test, etc.)
 under a single installation, you can set up a connection group for each, then switch between groups as needed.
 For example, to set up a "test" environment you would do this:</p>
 
@@ -95,7 +95,7 @@
 $db['test']['pconnect'] = TRUE;<br />
 $db['test']['db_debug'] = FALSE;<br />
 $db['test']['cache_on'] = FALSE;<br />
-$db['test']['cachedir'] =  &quot;&quot;;<br />
+$db['test']['cachedir'] = &quot;&quot;;<br />
 $db['test']['char_set'] = "utf8";<br />
 $db['test']['dbcollat'] = "utf8_general_ci";<br />
 $db['test']['swap_pre'] = "";<br />
@@ -107,7 +107,7 @@
 
 <code>$active_group = "test";</code>
 
-<p>Note: The name "test" is arbitrary.  It can be anything you want. By default we've used the word "default"
+<p>Note: The name "test" is arbitrary. It can be anything you want. By default we've used the word "default"
 for the primary connection, but it too can be renamed to something more relevant to your project.</p>
 
 <h3>Active Record</h3>
@@ -126,21 +126,21 @@
 <li><strong>password</strong> - The password used to connect to the database.</li>
 <li><strong>database</strong> - The name of the database you want to connect to.</li>
 <li><strong>dbdriver</strong> - The database type. ie: mysql, postgres, odbc, etc. Must be specified in lower case.</li>
-<li><strong>dbprefix</strong> - An optional table prefix which will added to the table name when running <a href="active_record.html">Active Record</a> queries.  This permits multiple CodeIgniter installations to share one database.</li>
+<li><strong>dbprefix</strong> - An optional table prefix which will added to the table name when running <a href="active_record.html">Active Record</a> queries. This permits multiple CodeIgniter installations to share one database.</li>
 <li><strong>pconnect</strong> - TRUE/FALSE (boolean) - Whether to use a persistent connection.</li>
 <li><strong>db_debug</strong> - TRUE/FALSE (boolean) - Whether database errors should be displayed.</li>
 <li><strong>cache_on</strong> - TRUE/FALSE (boolean) - Whether database query caching is enabled, see also <a href="caching.html">Database Caching Class</a>.</li>
 <li><strong>cachedir</strong> - The absolute server path to your database query cache directory.</li>
 <li><strong>char_set</strong> - The character set used in communicating with the database.</li>
-<li><strong>dbcollat</strong> - The character collation used in communicating with the database. <p class="important"><strong>Note:</strong> For MySQL and MySQLi databases, this setting is only used as a backup if your server is running PHP &lt; 5.2.3 or MySQL &lt; 5.0.7.  There is an incompatibility in PHP with mysql_real_escape_string() which can make your site vulnerable to SQL injection if you are using a multi-byte character set and are running versions lower than these.  Sites using Latin-1 or UTF-8 database character set and collation are unaffected.</p></li>
-<li><strong>swap_pre</strong> - A default table prefix that should be swapped with <var>dbprefix</var>.  This is useful for distributed applications where you might run manually written queries, and need the prefix to still be customizable by the end user.</li>
+<li><strong>dbcollat</strong> - The character collation used in communicating with the database. <p class="important"><strong>Note:</strong> For MySQL and MySQLi databases, this setting is only used as a backup if your server is running PHP &lt; 5.2.3 or MySQL &lt; 5.0.7. There is an incompatibility in PHP with mysql_real_escape_string() which can make your site vulnerable to SQL injection if you are using a multi-byte character set and are running versions lower than these. Sites using Latin-1 or UTF-8 database character set and collation are unaffected.</p></li>
+<li><strong>swap_pre</strong> - A default table prefix that should be swapped with <var>dbprefix</var>. This is useful for distributed applications where you might run manually written queries, and need the prefix to still be customizable by the end user.</li>
 <li><strong>autoinit</strong> - Whether or not to automatically connect to the database when the library loads. If set to false, the connection will take place prior to executing the first query.</li>
 <li><strong>stricton</strong> - TRUE/FALSE (boolean) - Whether to force "Strict Mode" connections, good for ensuring strict SQL while developing an application.</li>
-<li><strong>port</strong> - The database port number.  To use this value you have to add a line to the database config array.<code>$db['default']['port'] =  5432;</code>
+<li><strong>port</strong> - The database port number. To use this value you have to add a line to the database config array.<code>$db['default']['port'] = 5432;</code>
 </ul>
 
 <p class="important"><strong>Note:</strong> Depending on what database platform you are using (MySQL, Postgres, etc.)
-not all values will be needed.  For example, when using SQLite you will not need to supply a username or password, and
+not all values will be needed. For example, when using SQLite you will not need to supply a username or password, and
 the database name will be the path to your database file. The information above assumes you are using MySQL.</p>
 
 
diff --git a/user_guide/database/connecting.html b/user_guide/database/connecting.html
index bb1b401..1a74f55 100644
--- a/user_guide/database/connecting.html
+++ b/user_guide/database/connecting.html
@@ -84,8 +84,8 @@
 
 <ol>
 	<li>The database connection values, passed either as an array or a DSN string.</li>
-	<li>TRUE/FALSE (boolean).  Whether to return the connection ID (see Connecting to Multiple Databases below).</li>
-	<li>TRUE/FALSE (boolean).  Whether to enable the Active Record class.  Set to TRUE by default.</li>
+	<li>TRUE/FALSE (boolean). Whether to return the connection ID (see Connecting to Multiple Databases below).</li>
+	<li>TRUE/FALSE (boolean). Whether to enable the Active Record class. Set to TRUE by default.</li>
 </ol>
 
 
@@ -148,7 +148,7 @@
 <p>By setting the second parameter to TRUE (boolean) the function will return the database object.</p>
 
 <div class="important">
-<p>When you connect this way, you will use your object name to issue commands rather than the syntax used throughout this guide.  In other words, rather than issuing commands with:</p>
+<p>When you connect this way, you will use your object name to issue commands rather than the syntax used throughout this guide. In other words, rather than issuing commands with:</p>
 
 <p>$this->db->query();<br />$this->db->result();<br /> etc...</p>
 
diff --git a/user_guide/database/examples.html b/user_guide/database/examples.html
index 535fa31..6bb8beb 100644
--- a/user_guide/database/examples.html
+++ b/user_guide/database/examples.html
@@ -61,7 +61,7 @@
 
 <h1>Database Quick Start: Example Code</h1>
 
-<p>The following page contains example code showing how the database class is used.  For complete details please
+<p>The following page contains example code showing how the database class is used. For complete details please
 read the individual pages describing each function.</p>
 
 
@@ -73,7 +73,7 @@
 
 <p>Once loaded the class is ready to be used as described below.</p>
 
-<p>Note: If all your pages require database access you can connect automatically.  See the <a href="connecting.html">connecting</a> page for details.</p>
+<p>Note: If all your pages require database access you can connect automatically. See the <a href="connecting.html">connecting</a> page for details.</p>
 
 
 <h2>Standard Query With Multiple Results (Object Version)</h2>
@@ -90,7 +90,7 @@
 echo 'Total Results: ' . $query->num_rows();
 </code>
 
-<p>The above <dfn>result()</dfn> function returns an array of <strong>objects</strong>.  Example:  $row->title</p>
+<p>The above <dfn>result()</dfn> function returns an array of <strong>objects</strong>. Example: $row->title</p>
 
 
 <h2>Standard Query With Multiple Results (Array Version)</h2>
@@ -104,7 +104,7 @@
 &nbsp;&nbsp;&nbsp;&nbsp;echo $row['email'];<br />
 }</code>
 
-<p>The above <dfn>result_array()</dfn> function returns an array of standard array indexes.  Example:  $row['title']</p>
+<p>The above <dfn>result_array()</dfn> function returns an array of standard array indexes. Example: $row['title']</p>
 
 
 <h2>Testing for Results</h2>
@@ -137,7 +137,7 @@
 echo $row->name;<br />
 </code>
 
-<p>The above <dfn>row()</dfn> function returns an <strong>object</strong>.  Example:  $row->name</p>
+<p>The above <dfn>row()</dfn> function returns an <strong>object</strong>. Example: $row->name</p>
 
 
 <h2>Standard Query With Single Result (Array version)</h2>
@@ -148,7 +148,7 @@
 echo $row['name'];<br />
 </code>
 
-<p>The above <dfn>row_array()</dfn> function returns an <strong>array</strong>.  Example:  $row['name']</p>
+<p>The above <dfn>row_array()</dfn> function returns an <strong>array</strong>. Example: $row['name']</p>
 
 
 <h2>Standard Insert</h2>
diff --git a/user_guide/database/fields.html b/user_guide/database/fields.html
index 04d8b80..b204361 100644
--- a/user_guide/database/fields.html
+++ b/user_guide/database/fields.html
@@ -92,7 +92,7 @@
 <h2>$this->db->field_exists()</h2>
 
 <p>Sometimes it's helpful to know whether a particular field exists before performing an action.
-Returns a boolean TRUE/FALSE.  Usage example:</p>
+Returns a boolean TRUE/FALSE. Usage example:</p>
 
 <code>
 if ($this->db->field_exists('field_name', 'table_name'))<br />
@@ -101,7 +101,7 @@
 }
 </code>
 
-<p>Note:  Replace <em>field_name</em> with the name of the column you are looking for, and replace
+<p>Note: Replace <em>field_name</em> with the name of the column you are looking for, and replace
 <em>table_name</em> with the name of the table you are looking for.</p>
 
 
diff --git a/user_guide/database/forge.html b/user_guide/database/forge.html
index cad2cf2..bbef053 100644
--- a/user_guide/database/forge.html
+++ b/user_guide/database/forge.html
@@ -151,7 +151,7 @@
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
 </code></p>
-<p>After the fields have been defined, they can  be added  using <dfn>$this-&gt;dbforge-&gt;add_field($fields);</dfn> followed by a call to the <dfn>create_table()</dfn> function.</p>
+<p>After the fields have been defined, they can be added using <dfn>$this-&gt;dbforge-&gt;add_field($fields);</dfn> followed by a call to the <dfn>create_table()</dfn> function.</p>
 <h3>$this-&gt;dbforge-&gt;add_field()</h3>
 <p>The add fields function will accept the above array.</p>
 <h3>Passing strings as fields</h3>
@@ -164,7 +164,7 @@
 	// gives id INT(9) NOT NULL AUTO_INCREMENT</code></p>
 <h2><a name="add_key" id="add_key"></a>Adding Keys</h2>
 <p>Generally speaking, you'll want your table to have Keys. This is accomplished with <dfn>$this-&gt;dbforge-&gt;add_key('field')</dfn>. An optional second parameter set to TRUE will make it a primary key. Note that <dfn>add_key()</dfn> must be followed by a call to <dfn>create_table()</dfn>.</p>
-<p>Multiple column non-primary keys must be sent as an array.  Sample output below is for MySQL.</p>
+<p>Multiple column non-primary keys must be sent as an array. Sample output below is for MySQL.</p>
 <p><code>$this-&gt;dbforge-&gt;add_key('blog_id', TRUE);<br />
 	// gives PRIMARY KEY `blog_id` (`blog_id`)<br />
 	<br />
@@ -187,7 +187,7 @@
 <h2><a name="drop_table" id="drop_table"></a>Dropping a table</h2>
 <p>Executes a DROP TABLE sql</p>
 <p><code>$this-&gt;dbforge-&gt;drop_table('table_name');<br />
-	// gives DROP TABLE IF EXISTS  table_name</code></p>
+	// gives DROP TABLE IF EXISTS table_name</code></p>
 <h2><a name="rename_table" id="rename_table"></a>Renaming a table</h2>
 <p>Executes a TABLE rename</p>
 <p><code>$this-&gt;dbforge-&gt;rename_table('old_table_name', 'new_table_name');<br />
@@ -200,7 +200,7 @@
 );<br />
 $this-&gt;dbforge-&gt;add_column('table_name', $fields);<br />
 <br />
-// gives ALTER TABLE table_name ADD   	preferences TEXT</code></p>
+// gives ALTER TABLE table_name ADD  	preferences TEXT</code></p>
 <h2>$this-&gt;dbforge-&gt;drop_column()</h2>
 <p>Used to remove a column from a table. </p>
 <p><code>$this-&gt;dbforge-&gt;drop_column('table_name', 'column_to_drop');</code></p>
@@ -214,7 +214,7 @@
 );<br />
 $this-&gt;dbforge-&gt;modify_column('table_name', $fields);<br />
 	<br />
-	// gives ALTER TABLE table_name CHANGE   	old_name new_name TEXT </code></p>
+	// gives ALTER TABLE table_name CHANGE  	old_name new_name TEXT </code></p>
 <p>&nbsp;</p>
 </div>
 <!-- END CONTENT -->
diff --git a/user_guide/database/helpers.html b/user_guide/database/helpers.html
index 107d2ed..650dd7a 100644
--- a/user_guide/database/helpers.html
+++ b/user_guide/database/helpers.html
@@ -67,12 +67,12 @@
 
 <h2>$this->db->affected_rows()</h2>
 <p>Displays the number of affected rows, when doing "write" type queries (insert, update, etc.).</p>
-<p>Note:  In MySQL "DELETE FROM TABLE" returns 0 affected rows. The database class has a small hack that allows it to return the
-correct number of affected rows.  By default this hack is enabled but it can be turned off in the database driver file.</p>
+<p>Note: In MySQL "DELETE FROM TABLE" returns 0 affected rows. The database class has a small hack that allows it to return the
+correct number of affected rows. By default this hack is enabled but it can be turned off in the database driver file.</p>
 
 
 <h2>$this->db->count_all();</h2>
-<p>Permits you to determine the number of rows in a particular table.  Submit the table name in the first parameter. Example:</p>
+<p>Permits you to determine the number of rows in a particular table. Submit the table name in the first parameter. Example:</p>
 <code>echo $this->db->count_all('<var>my_table</var>');<br />
 <br />
 // Produces an integer, like 25
@@ -90,11 +90,11 @@
 
 
 <h2>$this->db->last_query();</h2>
-<p>Returns the last query that was run (the query string, not the result).  Example:</p>
+<p>Returns the last query that was run (the query string, not the result). Example:</p>
 
 <code>$str = $this->db->last_query();<br />
 <br />
-// Produces:  SELECT * FROM sometable....
+// Produces: SELECT * FROM sometable....
 </code>
 
 
@@ -109,7 +109,7 @@
 $str = $this->db->insert_string('table_name', $data);
 </code>
 
-<p>The first parameter is the table name, the second is an associative array with the data to be inserted.  The above example produces:</p>
+<p>The first parameter is the table name, the second is an associative array with the data to be inserted. The above example produces:</p>
 <code>INSERT INTO table_name (name, email, url) VALUES ('Rick', 'rick@example.com', 'example.com')</code>
 
 <p class="important">Note: Values are automatically escaped, producing safer queries.</p>
diff --git a/user_guide/database/index.html b/user_guide/database/index.html
index fa3548c..594de80 100644
--- a/user_guide/database/index.html
+++ b/user_guide/database/index.html
@@ -63,7 +63,7 @@
 structures and Active Record patterns. The database functions offer clear, simple syntax.</p>
 
 	<ul>
-		<li><a href="examples.html">Quick Start:  Usage Examples</a></li>
+		<li><a href="examples.html">Quick Start: Usage Examples</a></li>
 		<li><a href="configuration.html">Database Configuration</a></li>
 		<li><a href="connecting.html">Connecting to a Database</a></li>
 		<li><a href="queries.html">Running Queries</a></li>
diff --git a/user_guide/database/queries.html b/user_guide/database/queries.html
index f9f9680..685da43 100644
--- a/user_guide/database/queries.html
+++ b/user_guide/database/queries.html
@@ -68,14 +68,14 @@
 <code>$this->db->query('YOUR QUERY HERE');</code>
 
 <p>The <dfn>query()</dfn> function returns a database result <strong>object</strong> when "read" type queries are run,
-which you can use to <a href="results.html">show your results</a>.  When "write" type queries are run it simply returns TRUE or FALSE
-depending on success or failure.  When retrieving data you will typically assign the query to your own variable, like this:</p>
+which you can use to <a href="results.html">show your results</a>. When "write" type queries are run it simply returns TRUE or FALSE
+depending on success or failure. When retrieving data you will typically assign the query to your own variable, like this:</p>
 
 <code><var>$query</var> = $this->db->query('YOUR QUERY HERE');</code>
 
 <h2>$this->db->simple_query();</h2>
 
-<p>This is a simplified version of the <dfn>$this->db->query()</dfn> function.  It ONLY returns TRUE/FALSE on success or failure.
+<p>This is a simplified version of the <dfn>$this->db->query()</dfn> function. It ONLY returns TRUE/FALSE on success or failure.
 It DOES NOT return a database result set, nor does it set the query timer, or compile bind data, or store your query for debugging.
 It simply lets you submit a query. Most users will rarely use this function.</p>
 
@@ -100,16 +100,16 @@
 
 <ol>
 <li><strong>$this->db->escape()</strong> This function determines the data type so that it
-can escape only string data.  It also automatically adds single quotes around the data so you don't have to:
+can escape only string data. It also automatically adds single quotes around the data so you don't have to:
 
 <code>$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";</code></li>
 
-<li><strong>$this->db->escape_str()</strong>  This function escapes the data passed to it, regardless of type.
+<li><strong>$this->db->escape_str()</strong> This function escapes the data passed to it, regardless of type.
 Most of the time you'll use the above function rather than this one. Use the function like this:
 
 <code>$sql = "INSERT INTO table (title) VALUES('".$this->db->escape_str($title)."')";</code></li>
 
-<li><strong>$this->db->escape_like_str()</strong>  This method should be used when strings are to be used in LIKE
+<li><strong>$this->db->escape_like_str()</strong> This method should be used when strings are to be used in LIKE
 conditions so that LIKE wildcards ('%', '_') in the string are also properly escaped.
 
 <code>$search = '20% raise';<br />
@@ -130,7 +130,7 @@
 </code>
 
 <p>The question marks in the query are automatically replaced with the values in the array in the second parameter of the query function.</p>
-<p class="important">The secondary benefit of using binds is that the values are automatically escaped, producing safer queries.  You don't have to remember to manually escape data; the engine does it automatically for you.</p>
+<p class="important">The secondary benefit of using binds is that the values are automatically escaped, producing safer queries. You don't have to remember to manually escape data; the engine does it automatically for you.</p>
 
 
 
diff --git a/user_guide/database/results.html b/user_guide/database/results.html
index 8ad6a19..0b82752 100644
--- a/user_guide/database/results.html
+++ b/user_guide/database/results.html
@@ -112,7 +112,7 @@
 
 	<h2>result_array()</h2>
 
-	<p>This function returns the query result as a pure array, or an empty array when no result is produced.  Typically you'll use this in a foreach loop, like this:</p>
+	<p>This function returns the query result as a pure array, or an empty array when no result is produced. Typically you'll use this in a foreach loop, like this:</p>
 	<code>
 	$query = $this->db->query("YOUR QUERY");<br />
 	<br />
@@ -126,8 +126,8 @@
 
 	<h2>row()</h2>
 
-	<p>This function returns a single result row.  If your query has more than one row, it returns only the first row.
-	The result is returned as an <strong>object</strong>.  Here's a usage example:</p>
+	<p>This function returns a single result row. If your query has more than one row, it returns only the first row.
+	The result is returned as an <strong>object</strong>. Here's a usage example:</p>
 	<code>
 	$query = $this->db->query("YOUR QUERY");<br />
 	<br />
@@ -157,7 +157,7 @@
 
 	<h2>row_array()</h2>
 
-	<p>Identical to the above <var>row()</var> function, except it returns an array.  Example:</p>
+	<p>Identical to the above <var>row()</var> function, except it returns an array. Example:</p>
 
 	<code>
 	$query = $this->db->query("YOUR QUERY");<br />
@@ -209,7 +209,7 @@
 </code>
 
 <h2>$query->num_fields()</h2>
-<p>The number of FIELDS (columns) returned by the query.  Make sure to call the function using your query result object:</p>
+<p>The number of FIELDS (columns) returned by the query. Make sure to call the function using your query result object:</p>
 
 <code>$query = $this->db->query('SELECT * FROM my_table');<br /><br />
 echo $query->num_fields();
@@ -218,9 +218,9 @@
 
 
 <h2>$query->free_result()</h2>
-<p>It frees the memory associated with the result and deletes the result resource ID.  Normally PHP frees its memory automatically at the end of script
-execution.  However, if you are running a lot of queries in a particular script you might want to free the result after each query result has been
-generated in order to cut down on memory consumptions.  Example:
+<p>It frees the memory associated with the result and deletes the result resource ID. Normally PHP frees its memory automatically at the end of script
+execution. However, if you are running a lot of queries in a particular script you might want to free the result after each query result has been
+generated in order to cut down on memory consumptions. Example:
 </p>
 
 <code>$query = $this->db->query('SELECT title FROM my_table');<br /><br />
@@ -228,12 +228,12 @@
 {<br />
 &nbsp;&nbsp;&nbsp;echo $row->title;<br />
 }<br />
-$query->free_result();  // The $query result object will no longer be available<br />
+$query->free_result(); // The $query result object will no longer be available<br />
 <br />
 $query2 = $this->db->query('SELECT name FROM some_table');<br /><br />
 $row = $query2->row();<br />
 echo $row->name;<br />
-$query2->free_result();  // The $query2 result object will no longer be available
+$query2->free_result(); // The $query2 result object will no longer be available
 </code>
 
 
diff --git a/user_guide/database/table_data.html b/user_guide/database/table_data.html
index a2aaa99..631e3b9 100644
--- a/user_guide/database/table_data.html
+++ b/user_guide/database/table_data.html
@@ -65,7 +65,7 @@
 
 <h2>$this->db->list_tables();</h2>
 
-<p>Returns an array containing the names of all the tables in the database you are currently connected to.  Example:</p>
+<p>Returns an array containing the names of all the tables in the database you are currently connected to. Example:</p>
 
 <code>$tables = $this->db->list_tables();<br />
 <br />
@@ -79,7 +79,7 @@
 <h2>$this->db->table_exists();</h2>
 
 <p>Sometimes it's helpful to know whether a particular table exists before running an operation on it.
-Returns a boolean TRUE/FALSE.  Usage example:</p>
+Returns a boolean TRUE/FALSE. Usage example:</p>
 
 <code>
 if ($this->db->table_exists('table_name'))<br />
@@ -88,7 +88,7 @@
 }
 </code>
 
-<p>Note:  Replace <em>table_name</em> with the name of the table you are looking for.</p>
+<p>Note: Replace <em>table_name</em> with the name of the table you are looking for.</p>
 
 
 
diff --git a/user_guide/database/transactions.html b/user_guide/database/transactions.html
index 74945d4..68d76df 100644
--- a/user_guide/database/transactions.html
+++ b/user_guide/database/transactions.html
@@ -61,18 +61,18 @@
 
 <h1>Transactions</h1>
 
-<p>CodeIgniter's database abstraction allows you to use <dfn>transactions</dfn> with databases that support transaction-safe table types.  In MySQL, you'll need
-to be running InnoDB or BDB table types rather than the more common MyISAM.  Most other database platforms support transactions natively.</p>
+<p>CodeIgniter's database abstraction allows you to use <dfn>transactions</dfn> with databases that support transaction-safe table types. In MySQL, you'll need
+to be running InnoDB or BDB table types rather than the more common MyISAM. Most other database platforms support transactions natively.</p>
 
 <p>If you are not familiar with
-transactions we recommend you find a good online resource to learn about them for your particular database.  The information below assumes you
+transactions we recommend you find a good online resource to learn about them for your particular database. The information below assumes you
 have a basic understanding of transactions.
 </p>
 
 <h2>CodeIgniter's Approach to Transactions</h2>
 
-<p>CodeIgniter utilizes an approach to transactions that is very similar to the process used by the popular database class ADODB.  We've chosen that approach
-because it greatly simplifies the process of running transactions.  In most cases all that is required are two lines of code.</p>
+<p>CodeIgniter utilizes an approach to transactions that is very similar to the process used by the popular database class ADODB. We've chosen that approach
+because it greatly simplifies the process of running transactions. In most cases all that is required are two lines of code.</p>
 
 <p>Traditionally, transactions have required a fair amount of work to implement since they demand that you to keep track of your queries
 and determine whether to <dfn>commit</dfn> or <dfn>rollback</dfn> based on the success or failure of your queries. This is particularly cumbersome with
@@ -98,7 +98,7 @@
 
 <h2>Strict Mode</h2>
 
-<p>By default CodeIgniter runs all transactions in <dfn>Strict Mode</dfn>.  When strict mode is enabled, if you are running multiple groups of
+<p>By default CodeIgniter runs all transactions in <dfn>Strict Mode</dfn>. When strict mode is enabled, if you are running multiple groups of
 transactions, if one group fails all groups will be rolled back. If strict mode is disabled, each group is treated independently, meaning
 a failure of one group will not affect any others.</p>
 
@@ -127,7 +127,7 @@
 
 <h2>Enabling Transactions</h2>
 
-<p>Transactions are enabled automatically the moment you use <dfn>$this->db->trans_start()</dfn>.  If you would like to disable transactions you
+<p>Transactions are enabled automatically the moment you use <dfn>$this->db->trans_start()</dfn>. If you would like to disable transactions you
 can do so using <dfn>$this->db->trans_off()</dfn>:</p>
 
 <code>
diff --git a/user_guide/database/utilities.html b/user_guide/database/utilities.html
index c488180..ec45f26 100644
--- a/user_guide/database/utilities.html
+++ b/user_guide/database/utilities.html
@@ -105,7 +105,7 @@
 <h2><a name="exists"></a>$this->dbutil->database_exists();</h2>
 
 <p>Sometimes it's helpful to know whether a particular database exists.
-Returns a boolean TRUE/FALSE.  Usage example:</p>
+Returns a boolean TRUE/FALSE. Usage example:</p>
 
 <code>
 if ($this->dbutil->database_exists('database_name'))<br />
@@ -114,7 +114,7 @@
 }
 </code>
 
-<p>Note:  Replace <em>database_name</em> with the name of the table you are looking for. This function is case sensitive.</p>
+<p>Note: Replace <em>database_name</em> with the name of the table you are looking for. This function is case sensitive.</p>
 
 
 
@@ -184,7 +184,7 @@
 </code>
 
 <p>The second and third parameters allows you to
-set the delimiter and newline character.  By default tabs are used as the delimiter and "\n" is used as a new line.  Example:</p>
+set the delimiter and newline character. By default tabs are used as the delimiter and "\n" is used as a new line. Example:</p>
 
 <code>
 $delimiter = ",";<br />
@@ -193,14 +193,14 @@
 echo $this->dbutil->csv_from_result($query, $delimiter, $newline);
 </code>
 
-<p><strong>Important:</strong>&nbsp; This function will NOT write the CSV file for you.  It simply creates the CSV layout.
+<p><strong>Important:</strong>&nbsp; This function will NOT write the CSV file for you. It simply creates the CSV layout.
 If you need to write the file use the <a href="../helpers/file_helper.html">File Helper</a>.</p>
 
 
 <h2><a name="xml"></a>$this->dbutil->xml_from_result($db_result)</h2>
 
 <p>Permits you to generate an XML file from a query result. The first parameter expects a query result object, the second
-may contain an optional array of config parameters.  Example:</p>
+may contain an optional array of config parameters. Example:</p>
 
 <code>
 $this->load->dbutil();<br />
@@ -217,18 +217,18 @@
 echo $this->dbutil->xml_from_result($query, $config);
 </code>
 
-<p><strong>Important:</strong>&nbsp; This function will NOT write the XML file for you.  It simply creates the XML layout.
+<p><strong>Important:</strong>&nbsp; This function will NOT write the XML file for you. It simply creates the XML layout.
 If you need to write the file use the <a href="../helpers/file_helper.html">File Helper</a>.</p>
 
 
 <h2><a name="backup"></a>$this->dbutil->backup()</h2>
 
-<p>Permits you to backup your full database or individual tables.  The backup data can be compressed in either Zip or Gzip format.</p>
+<p>Permits you to backup your full database or individual tables. The backup data can be compressed in either Zip or Gzip format.</p>
 
 <p class="important"><strong>Note:</strong>&nbsp; This features is only available for MySQL databases.</p>
 
 <p>Note: Due to the limited execution time and memory available to PHP, backing up very large
-databases may not be possible.  If your database is very large you might need to backup directly from your SQL server
+databases may not be possible. If your database is very large you might need to backup directly from your SQL server
 via the command line, or have your server admin do it for you if you do not have root privileges.</p>
 
 <h3>Usage Example</h3>
@@ -278,7 +278,7 @@
 <th>Options</th>
 <th>Description</th>
 </tr><tr>
-<td class="td"><strong>tables</strong></td><td class="td">empty array</td><td class="td">None</td><td class="td">An array of tables you want backed up.  If left blank all tables will be exported.</td>
+<td class="td"><strong>tables</strong></td><td class="td">empty array</td><td class="td">None</td><td class="td">An array of tables you want backed up. If left blank all tables will be exported.</td>
 </tr><tr>
 <td class="td"><strong>ignore</strong></td><td class="td">empty array</td><td class="td">None</td><td class="td">An array of tables you want the backup routine to ignore.</td>
 </tr><tr>
diff --git a/user_guide/doc_style/template.html b/user_guide/doc_style/template.html
index d59d5e4..e255032 100644
--- a/user_guide/doc_style/template.html
+++ b/user_guide/doc_style/template.html
@@ -51,7 +51,7 @@
 
 <h1>Foo Class</h1>
 
-<p>Brief description of Foo Class.  If it extends a native CodeIgniter class, please link to the class in the CodeIgniter documents here.</p>
+<p>Brief description of Foo Class. If it extends a native CodeIgniter class, please link to the class in the CodeIgniter documents here.</p>
 
 <p class="important"><strong>Important:</strong>&nbsp; This is an important note with <kbd>EMPHASIS</kbd>.</p>
 
diff --git a/user_guide/general/alternative_php.html b/user_guide/general/alternative_php.html
index abd5845..574ab35 100644
--- a/user_guide/general/alternative_php.html
+++ b/user_guide/general/alternative_php.html
@@ -58,19 +58,19 @@
 <h1>Alternate PHP Syntax for View Files</h1>
 
 <p>If you do not utilize CodeIgniter's <a href="../libraries/parser.html">template engine</a>, you'll be using pure PHP
-in your View files.  To minimize the PHP code in these files, and to make it easier to identify the code blocks it is recommended that you use
-PHPs alternative syntax for control structures and short tag echo statements.  If you are not familiar with this syntax, it allows you to eliminate the braces from your code,
+in your View files. To minimize the PHP code in these files, and to make it easier to identify the code blocks it is recommended that you use
+PHPs alternative syntax for control structures and short tag echo statements. If you are not familiar with this syntax, it allows you to eliminate the braces from your code,
 and eliminate "echo" statements.</p>
 
 <h2>Automatic Short Tag Support</h2>
 
 <p><strong>Note:</strong> If you find that the syntax described in this page does not work on your server it might
 be that "short tags" are disabled in your PHP ini file. CodeIgniter will optionally rewrite short tags on-the-fly,
-allowing you to use that syntax even if your server doesn't support it.  This feature can be enabled in your
+allowing you to use that syntax even if your server doesn't support it. This feature can be enabled in your
 <dfn>config/config.php</dfn> file.</p>
 
 <p class="important">Please note that if you do use this feature, if PHP errors are encountered
-in your <strong>view files</strong>, the error message and line number will not be accurately shown.  Instead, all errors
+in your <strong>view files</strong>, the error message and line number will not be accurately shown. Instead, all errors
 will be shown as <kbd>eval()</kbd> errors.</p>
 
 
@@ -89,7 +89,7 @@
 <h2>Alternative Control Structures</h2>
 
 <p>Controls structures, like <var>if</var>, <var>for</var>, <var>foreach</var>, and <var>while</var> can be
-written in a simplified format as well.  Here is an example using foreach:</p>
+written in a simplified format as well. Here is an example using foreach:</p>
 
 <code>
 &lt;ul><br />
@@ -102,14 +102,14 @@
 <br />
 &lt;/ul></code>
 
-<p>Notice that there are no braces.  Instead, the end brace is replaced with <var>endforeach</var>.
+<p>Notice that there are no braces. Instead, the end brace is replaced with <var>endforeach</var>.
 Each of the control structures listed above has a similar closing syntax:
 <var>endif</var>, <var>endfor</var>, <var>endforeach</var>, and <var>endwhile</var></p>
 
-<p>Also notice that instead of using a semicolon after each structure (except the last one), there is a colon.  This is
+<p>Also notice that instead of using a semicolon after each structure (except the last one), there is a colon. This is
 important!</p>
 
-<p>Here is another example, using if/elseif/else.  Notice the colons:</p>
+<p>Here is another example, using if/elseif/else. Notice the colons:</p>
 
 
 <code><var>&lt;?php if ($username == 'sally'): ?></var><br />
diff --git a/user_guide/general/autoloader.html b/user_guide/general/autoloader.html
index fae0b5f..405dda3 100644
--- a/user_guide/general/autoloader.html
+++ b/user_guide/general/autoloader.html
@@ -75,7 +75,7 @@
 loaded to the <samp>autoload</samp> array. You'll find instructions in that file corresponding to each
 type of item.</p>
 
-<p class="important"><strong>Note:</strong>  Do not include the file extension (.php) when adding items to the autoload array.</p>
+<p class="important"><strong>Note:</strong> Do not include the file extension (.php) when adding items to the autoload array.</p>
 
 
 
diff --git a/user_guide/general/caching.html b/user_guide/general/caching.html
index c77f9a1..abfe6de 100644
--- a/user_guide/general/caching.html
+++ b/user_guide/general/caching.html
@@ -68,8 +68,8 @@
 <h2>How Does Caching Work?</h2>
 
 <p>Caching can be enabled on a per-page basis, and you can set the length of time that a page should remain cached before being refreshed.
-When a page is loaded for the first time, the cache file will be written to your <dfn>application/cache</dfn> folder.  On subsequent page loads the cache file will be retrieved
-and sent to the requesting user's browser.  If it has expired, it will be deleted and refreshed before being sent to the browser.</p>
+When a page is loaded for the first time, the cache file will be written to your <dfn>application/cache</dfn> folder. On subsequent page loads the cache file will be retrieved
+and sent to the requesting user's browser. If it has expired, it will be deleted and refreshed before being sent to the browser.</p>
 
 <p>Note: The Benchmark tag is not cached so you can still view your page load speed when caching is enabled.</p>
 
@@ -90,8 +90,8 @@
 
 <h2>Deleting Caches</h2>
 
-<p>If you no longer wish to cache a file you can remove the caching tag and it will no longer be refreshed when it expires.  Note:
-Removing the tag will not delete the cache immediately.  It will have to expire normally.  If you need to remove it earlier you
+<p>If you no longer wish to cache a file you can remove the caching tag and it will no longer be refreshed when it expires. Note:
+Removing the tag will not delete the cache immediately. It will have to expire normally. If you need to remove it earlier you
 will need to manually delete it from your cache folder.</p>
 
 
diff --git a/user_guide/general/common_functions.html b/user_guide/general/common_functions.html
index bfac326..3c7a5df 100644
--- a/user_guide/general/common_functions.html
+++ b/user_guide/general/common_functions.html
@@ -68,7 +68,7 @@
 &nbsp;&nbsp;&nbsp;&nbsp;$str = quoted_printable_encode($str);<br />
 }</code>
 
-<p>Returns boolean <kbd>TRUE</kbd> if the installed version of PHP is equal to or greater than the supplied version number.  Returns  <kbd>FALSE</kbd> if the installed version of PHP is lower than the supplied version number.</p>
+<p>Returns boolean <kbd>TRUE</kbd> if the installed version of PHP is equal to or greater than the supplied version number. Returns <kbd>FALSE</kbd> if the installed version of PHP is lower than the supplied version number.</p>
 
 
 <h2>is_really_writable('<var>path/to/file</var>')</h2>
@@ -92,10 +92,10 @@
 
 <h2>set_status_header(<var>code</var>, '<var>text</var>');</h2>
 
-<p>Permits you to manually set a server status header.  Example:</p>
+<p>Permits you to manually set a server status header. Example:</p>
 
 <code>set_status_header(401);<br />
-// Sets the header as:  Unauthorized</code>
+// Sets the header as: Unauthorized</code>
 
 <p><a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">See here</a> for a full list of headers.</p>
 
diff --git a/user_guide/general/controllers.html b/user_guide/general/controllers.html
index c909164..01ef3d1 100644
--- a/user_guide/general/controllers.html
+++ b/user_guide/general/controllers.html
@@ -91,7 +91,7 @@
 <a name="hello"></a>
 <h2>Let's try it:&nbsp; Hello World!</h2>
 
-<p>Let's create a simple controller so you can see it in action.  Using your text editor, create a file called <dfn>blog.php</dfn>, and put the following code in it:</p>
+<p>Let's create a simple controller so you can see it in action. Using your text editor, create a file called <dfn>blog.php</dfn>, and put the following code in it:</p>
 
 
 <textarea class="textarea" style="width:100%" cols="50" rows="10">
@@ -116,7 +116,7 @@
 
 <p>If you did it right, you should see <samp>Hello World!</samp>.</p>
 
-<p>Note: Class names must start with an uppercase letter.  In other words, this is valid:</p>
+<p>Note: Class names must start with an uppercase letter. In other words, this is valid:</p>
 
 <code>&lt;?php<br />
 class <var>Blog</var> extends CI_Controller {<br />
@@ -139,14 +139,14 @@
 <a name="functions"></a>
 <h2>Functions</h2>
 
-<p>In the above example the function name is <dfn>index()</dfn>.  The "index" function is always loaded by default if the
-<strong>second segment</strong> of the URI is empty.  Another way to show your "Hello World" message would be this:</p>
+<p>In the above example the function name is <dfn>index()</dfn>. The "index" function is always loaded by default if the
+<strong>second segment</strong> of the URI is empty. Another way to show your "Hello World" message would be this:</p>
 
 <code>example.com/index.php/<var>blog</var>/<samp>index</samp>/</code>
 
 <p><strong>The second segment of the URI determines which function in the controller gets called.</strong></p>
 
-<p>Let's try it.  Add a new function to your controller:</p>
+<p>Let's try it. Add a new function to your controller:</p>
 
 
 <textarea class="textarea" style="width:100%" cols="50" rows="15">
@@ -204,7 +204,7 @@
 <h2>Defining a Default Controller</h2>
 
 <p>CodeIgniter can be told to load a default controller when a URI is not present,
-as will be the case when only your site root URL is requested.  To specify a default controller, open
+as will be the case when only your site root URL is requested. To specify a default controller, open
 your <dfn>application/config/routes.php</dfn> file and set this variable:</p>
 
 <code>$route['default_controller'] = '<var>Blog</var>';</code>
@@ -226,7 +226,7 @@
 }</code>
 
 <p class="important"><strong>Important:</strong>&nbsp; If your controller contains a function named <kbd>_remap()</kbd>, it will <strong>always</strong>
-get called regardless of what your URI contains.  It overrides the normal behavior in which the URI determines which function is called,
+get called regardless of what your URI contains. It overrides the normal behavior in which the URI determines which function is called,
 allowing you to define your own function routing rules.</p>
 
 <p>The overridden function call (typically the second segment of the URI) will be passed as a parameter to the <kbd>_remap()</kbd> function:</p>
@@ -259,9 +259,9 @@
 <a name="output"></a>
 <h2>Processing Output</h2>
 
-<p>CodeIgniter has an output class that takes care of sending your final rendered data to the web browser automatically.  More information on this can be found in the
-<a href="views.html">Views</a> and <a href="../libraries/output.html">Output class</a> pages.  In some cases, however, you might want to
-post-process the finalized data in some way and send it to the browser yourself.  CodeIgniter permits you to
+<p>CodeIgniter has an output class that takes care of sending your final rendered data to the web browser automatically. More information on this can be found in the
+<a href="views.html">Views</a> and <a href="../libraries/output.html">Output class</a> pages. In some cases, however, you might want to
+post-process the finalized data in some way and send it to the browser yourself. CodeIgniter permits you to
 add a function named <dfn>_output()</dfn> to your controller that will receive the finalized output data.</p>
 
 <p><strong>Important:</strong>&nbsp; If your controller contains a function named <kbd>_output()</kbd>, it will <strong>always</strong>
@@ -275,7 +275,7 @@
 &nbsp;&nbsp;&nbsp;&nbsp;echo $output;<br />
 }</code>
 
-<p class="important">Please note that your <dfn>_output()</dfn> function will receive the data in its finalized state.  Benchmark and memory usage data will be rendered,
+<p class="important">Please note that your <dfn>_output()</dfn> function will receive the data in its finalized state. Benchmark and memory usage data will be rendered,
 cache files written (if you have caching enabled), and headers will be sent (if you use that <a href="../libraries/output.html">feature</a>)
 before it is handed off to the _output() function.<br />
 <br />
@@ -287,14 +287,14 @@
 }</code>
 
 If you are using this feature the page execution timer and memory usage stats might not be perfectly accurate
-since they will not take into acccount any further processing you do.  For an alternate way to control output <em>before</em> any of the final processing is done, please see
+since they will not take into acccount any further processing you do. For an alternate way to control output <em>before</em> any of the final processing is done, please see
 the available methods in the <a href="../libraries/output.html">Output Class</a>.</p>
 
 <a name="private"></a>
 <h2>Private Functions</h2>
 
 
-<p>In some cases you may want certain functions hidden from public access.  To make a function private, simply add an
+<p>In some cases you may want certain functions hidden from public access. To make a function private, simply add an
 underscore as the name prefix and it will not be served via a URL request. For example, if you were to have a function like this:</p>
 
 <code>
@@ -312,11 +312,11 @@
 <a name="subfolders"></a>
 <h2>Organizing Your Controllers into Sub-folders</h2>
 
-<p>If you are building a large application you might find it convenient to organize your controllers into sub-folders.  CodeIgniter permits you to do this.</p>
+<p>If you are building a large application you might find it convenient to organize your controllers into sub-folders. CodeIgniter permits you to do this.</p>
 
 <p>Simply create folders within your <dfn>application/controllers</dfn> directory and place your controller classes within them.</p>
 
-<p><strong>Note:</strong>&nbsp; When using this feature the first segment of your URI must specify the folder.  For example, lets say you have a controller
+<p><strong>Note:</strong>&nbsp; When using this feature the first segment of your URI must specify the folder. For example, lets say you have a controller
 located here:</p>
 
 <code>application/controllers/<kbd>products</kbd>/shoes.php</code>
@@ -326,7 +326,7 @@
 <code>example.com/index.php/products/shoes/show/123</code>
 
 <p>Each of your sub-folders may contain a default controller which will be
-called if the URL contains only the sub-folder.  Simply name your default controller as specified in your
+called if the URL contains only the sub-folder. Simply name your default controller as specified in your
 <dfn>application/config/routes.php</dfn> file</p>
 
 
diff --git a/user_guide/general/core_classes.html b/user_guide/general/core_classes.html
index 51c2c74..e5521b4 100644
--- a/user_guide/general/core_classes.html
+++ b/user_guide/general/core_classes.html
@@ -111,12 +111,12 @@
 <h2>Extending Core Class</h2>
 
 <p>If all you need to do is add some functionality to an existing library - perhaps add a function or two - then
-it's overkill to replace the entire library with your version.  In this case it's better to simply extend the class.
+it's overkill to replace the entire library with your version. In this case it's better to simply extend the class.
 Extending a class is nearly identical to replacing a class with a couple exceptions:</p>
 
 <ul>
 <li>The class declaration must extend the parent class.</li>
-<li>Your new class name and filename must be prefixed with <kbd>MY_</kbd> (this item is configurable.  See below.).</li>
+<li>Your new class name and filename must be prefixed with <kbd>MY_</kbd> (this item is configurable. See below.).</li>
 </ul>
 
 <p>For example, to extend the native <kbd>Input</kbd> class you'll create a file named <dfn>application/core/</dfn><kbd>MY_Input.php</kbd>, and declare your class with:</p>
diff --git a/user_guide/general/creating_libraries.html b/user_guide/general/creating_libraries.html
index 8198c18..a44ec47 100644
--- a/user_guide/general/creating_libraries.html
+++ b/user_guide/general/creating_libraries.html
@@ -58,7 +58,7 @@
 <h1>Creating Libraries</h1>
 
 <p>When we use the term "Libraries" we are normally referring to the classes that are located in the <kbd>libraries</kbd>
-directory and described in the Class Reference of this user guide.  In this case, however, we will instead describe how you can create
+directory and described in the Class Reference of this user guide. In this case, however, we will instead describe how you can create
 your own libraries within your <dfn>application/libraries</dfn> directory in order to maintain separation between your local resources
 and the global framework resources.</p>
 
@@ -75,7 +75,7 @@
 
 <p>The page below explains these three concepts in detail.</p>
 
-<p class="important"><strong>Note:</strong> The Database classes can not be extended or replaced with your own classes.  All other classes are able to be replaced/extended.</p>
+<p class="important"><strong>Note:</strong> The Database classes can not be extended or replaced with your own classes. All other classes are able to be replaced/extended.</p>
 
 
 <h2>Storage</h2>
@@ -88,16 +88,16 @@
 
 <ul>
 <li>File names must be capitalized. For example:&nbsp; <dfn>Myclass.php</dfn></li>
-<li>Class declarations must be capitalized. For example:&nbsp;  <kbd>class Myclass</kbd></li>
+<li>Class declarations must be capitalized. For example:&nbsp; <kbd>class Myclass</kbd></li>
 <li>Class names and file names must match.</li>
 </ul>
 
 
 <h2>The Class File</h2>
 
-<p>Classes should have this basic prototype (Note:  We are using the name <kbd>Someclass</kbd> purely as an example):</p>
+<p>Classes should have this basic prototype (Note: We are using the name <kbd>Someclass</kbd> purely as an example):</p>
 
-<code>&lt;?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<code>&lt;?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 <br /><br />
 class Someclass {<br />
 <br />
@@ -136,7 +136,7 @@
 
 <p>If you use this feature you must set up your class constructor to expect data:</p>
 
-<code>&lt;?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');<br />
+<code>&lt;?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');<br />
 <br />
 class Someclass {<br />
 <br />
@@ -147,8 +147,8 @@
 }<br /><br />
 ?&gt;</code>
 
-<p class="important">You can also pass parameters stored in a config file.  Simply create a config file named identically to the class <kbd>file name</kbd>
-and store it in your <dfn>application/config/</dfn> folder.  Note that if you dynamically pass parameters as described above,
+<p class="important">You can also pass parameters stored in a config file. Simply create a config file named identically to the class <kbd>file name</kbd>
+and store it in your <dfn>application/config/</dfn> folder. Note that if you dynamically pass parameters as described above,
 the config file option will not be available.</p>
 
 
@@ -202,7 +202,7 @@
 <h2>Replacing Native Libraries with Your Versions</h2>
 
 <p>Simply by naming your class files identically to a native library will cause CodeIgniter to use it instead of the native one. To use this
-feature you must name the file and the class declaration exactly the same as the native library.  For example, to replace the native <kbd>Email</kbd> library
+feature you must name the file and the class declaration exactly the same as the native library. For example, to replace the native <kbd>Email</kbd> library
 you'll create a file named <dfn>application/libraries/Email.php</dfn>, and declare your class with:</p>
 
 <code>
@@ -222,12 +222,12 @@
 <h2>Extending Native Libraries</h2>
 
 <p>If all you need to do is add some functionality to an existing library - perhaps add a function or two - then
-it's overkill to replace the entire library with your version.  In this case it's better to simply extend the class.
+it's overkill to replace the entire library with your version. In this case it's better to simply extend the class.
 Extending a class is nearly identical to replacing a class with a couple exceptions:</p>
 
 <ul>
 <li>The class declaration must extend the parent class.</li>
-<li>Your new class name and filename must be prefixed with <kbd>MY_</kbd> (this item is configurable.  See below.).</li>
+<li>Your new class name and filename must be prefixed with <kbd>MY_</kbd> (this item is configurable. See below.).</li>
 </ul>
 
 <p>For example, to extend the native <kbd>Email</kbd> class you'll create a file named <dfn>application/libraries/</dfn><kbd>MY_Email.php</kbd>, and declare your class with:</p>
@@ -252,12 +252,12 @@
 
 <h3>Loading Your Sub-class</h3>
 
-<p>To load your sub-class you'll use the standard syntax normally used.  DO NOT include your prefix.  For example,
+<p>To load your sub-class you'll use the standard syntax normally used. DO NOT include your prefix. For example,
 to load the example above, which extends the Email class, you will use:</p>
 
 <code>$this->load->library('<kbd>email</kbd>');</code>
 
-<p>Once loaded you will use the class variable as you normally would for the class you are extending.  In the case of
+<p>Once loaded you will use the class variable as you normally would for the class you are extending. In the case of
 the email class all calls will use:</p>
 
 
diff --git a/user_guide/general/credits.html b/user_guide/general/credits.html
index 9e0fbac..64b72c4 100644
--- a/user_guide/general/credits.html
+++ b/user_guide/general/credits.html
@@ -58,7 +58,7 @@
 <h1>Credits</h1>
 
 <p>CodeIgniter was originally developed by <a href="http://www.ellislab.com/">Rick Ellis</a> (CEO of
-<a href="http://ellislab.com/">EllisLab, Inc.</a>).  The framework was written for performance in the real
+<a href="http://ellislab.com/">EllisLab, Inc.</a>). The framework was written for performance in the real
 world, with many of the class libraries, helpers, and sub-systems borrowed from the code-base of
 <a href="http://www.expressionengine.com/">ExpressionEngine</a>.</p>
 
diff --git a/user_guide/general/drivers.html b/user_guide/general/drivers.html
index 8dbeb93..4cdb568 100644
--- a/user_guide/general/drivers.html
+++ b/user_guide/general/drivers.html
@@ -58,15 +58,15 @@
 <h1>Using CodeIgniter Drivers</h1>
 
 
-<p>Drivers are a special type of Library that has a parent class and any number of potential child classes.  Child classes have access to the parent class, but not their siblings.  Drivers provide an elegant syntax  in your <a href="controllers.html">controllers</a> for libraries that benefit from or require being broken down into discrete classes.</p>
+<p>Drivers are a special type of Library that has a parent class and any number of potential child classes. Child classes have access to the parent class, but not their siblings. Drivers provide an elegant syntax in your <a href="controllers.html">controllers</a> for libraries that benefit from or require being broken down into discrete classes.</p>
 
-<p>Drivers are found in the <dfn>system/libraries</dfn> folder, in their own folder which is identically named to the parent library class.  Also inside that folder is a subfolder named <kbd>drivers</kbd>, which contains all of the possible child class files.</p>
+<p>Drivers are found in the <dfn>system/libraries</dfn> folder, in their own folder which is identically named to the parent library class. Also inside that folder is a subfolder named <kbd>drivers</kbd>, which contains all of the possible child class files.</p>
 
 <p>To use a driver you will initialize it within a controller using the following initialization function:</p>
 
 <code>$this->load->driver('<var>class name</var>'); </code>
 
-<p>Where <var>class name</var> is the name of the driver class you want to invoke.  For example, to load a driver named "Some Parent" you would do this:</p>
+<p>Where <var>class name</var> is the name of the driver class you want to invoke. For example, to load a driver named "Some Parent" you would do this:</p>
 
 <code>$this->load->driver('<var>some_parent</var>');</code>
 
diff --git a/user_guide/general/environments.html b/user_guide/general/environments.html
index 175a153..9aed1d6 100644
--- a/user_guide/general/environments.html
+++ b/user_guide/general/environments.html
@@ -58,17 +58,17 @@
 <h1>Handling Multiple Environments</h1>
 
 <p>
-    Developers often desire different system behavior depending on whether
-    an application is running in a development or production
-    environment. For example, verbose error output is something that would
-    be useful while developing an application, but it may also pose a security issue when "live".
+  Developers often desire different system behavior depending on whether
+  an application is running in a development or production
+  environment. For example, verbose error output is something that would
+  be useful while developing an application, but it may also pose a security issue when "live".
 </p>
 
 <h2>The ENVIRONMENT Constant</h2>
 
 <p>
-    By default, CodeIgniter comes with the environment constant set to
-    '<kbd>development</kbd>'. At the top of index.php, you will see:
+  By default, CodeIgniter comes with the environment constant set to
+  '<kbd>development</kbd>'. At the top of index.php, you will see:
 </p>
 
 <code>
@@ -76,35 +76,35 @@
 </code>
 
 <p>
-    In addition to affecting some basic framework behavior (see the next section),
-    you may use this constant in your own development to differentiate
-    between which environment you are running in.
+  In addition to affecting some basic framework behavior (see the next section),
+  you may use this constant in your own development to differentiate
+  between which environment you are running in.
 </p>
 
 <h2>Effects On Default Framework Behavior</h2>
 
 <p>
-    There are some places in the CodeIgniter system where the <kbd>ENVIRONMENT</kbd>
-    constant is used. This section describes how default framework behavior is
-    affected.
+  There are some places in the CodeIgniter system where the <kbd>ENVIRONMENT</kbd>
+  constant is used. This section describes how default framework behavior is
+  affected.
 </p>
 
 <h3>Error Reporting</h3>
 
 <p>
-    Setting the <kbd>ENVIRONMENT</kbd> constant to a value of '<kbd>development</kbd>' will
-    cause all PHP errors to be rendered to the browser when they occur. Conversely,
-    setting the constant to '<kbd>production</kbd>' will disable all error output. Disabling
-    error reporting in production is a <a href="security.html">good security practice</a>.
+  Setting the <kbd>ENVIRONMENT</kbd> constant to a value of '<kbd>development</kbd>' will
+  cause all PHP errors to be rendered to the browser when they occur. Conversely,
+  setting the constant to '<kbd>production</kbd>' will disable all error output. Disabling
+  error reporting in production is a <a href="security.html">good security practice</a>.
 </p>
 
 <h3>Configuration Files</h3>
 
 <p>
-    Optionally, you can have CodeIgniter load environment-specific
-    configuration files. This may be useful for managing things like differing API keys
-    across multiple environments. This is described in more detail in the
-    environment section of the <a href="../libraries/config.html#environments">Config Class</a> documentation.
+  Optionally, you can have CodeIgniter load environment-specific
+  configuration files. This may be useful for managing things like differing API keys
+  across multiple environments. This is described in more detail in the
+  environment section of the <a href="../libraries/config.html#environments">Config Class</a> documentation.
 </p>
 
 </div>
diff --git a/user_guide/general/errors.html b/user_guide/general/errors.html
index 58eff65..b1664c6 100644
--- a/user_guide/general/errors.html
+++ b/user_guide/general/errors.html
@@ -60,13 +60,13 @@
 <p>CodeIgniter lets you build error reporting into your applications using the functions described below.
 In addition, it has an error logging class that permits error and debugging messages to be saved as text files.</p>
 
-<p class="important"><strong>Note:</strong> By default, CodeIgniter displays all PHP errors.  You might
-wish to change this behavior once your development is complete.  You'll find the <dfn>error_reporting()</dfn>
+<p class="important"><strong>Note:</strong> By default, CodeIgniter displays all PHP errors. You might
+wish to change this behavior once your development is complete. You'll find the <dfn>error_reporting()</dfn>
 function located at the top of your main index.php file. Disabling error reporting will NOT prevent log files
 from being written if there are errors.</p>
 
 <p>Unlike most systems in CodeIgniter, the error functions are simple procedural interfaces that are available
-globally throughout the application.  This approach permits error messages to get triggered without having to worry
+globally throughout the application. This approach permits error messages to get triggered without having to worry
 about class/function scoping.</p>
 
 <p>The following functions let you generate errors:</p>
@@ -88,9 +88,9 @@
 
 <h2>log_message('<var>level</var>', '<samp>message</samp>')</h2>
 
-<p>This function lets you write messages to your log files.  You must supply one of three "levels"
+<p>This function lets you write messages to your log files. You must supply one of three "levels"
 in the first parameter, indicating what type of message it is (debug, error, info), with the message
-itself in the second parameter.  Example:</p>
+itself in the second parameter. Example:</p>
 
 <code>
 if ($some_var == "")<br />
@@ -108,14 +108,14 @@
 <p>There are three message types:</p>
 
 <ol>
-<li>Error Messages.  These are actual errors, such as PHP errors or user errors.</li>
-<li>Debug Messages.  These are messages that assist in debugging. For example, if a class has been initialized, you could log this as debugging info.</li>
-<li>Informational Messages.  These are the lowest priority messages, simply giving information regarding some process.  CodeIgniter doesn't natively generate any info messages but you may want to in your application.</li>
+<li>Error Messages. These are actual errors, such as PHP errors or user errors.</li>
+<li>Debug Messages. These are messages that assist in debugging. For example, if a class has been initialized, you could log this as debugging info.</li>
+<li>Informational Messages. These are the lowest priority messages, simply giving information regarding some process. CodeIgniter doesn't natively generate any info messages but you may want to in your application.</li>
 </ol>
 
 
 <p class="important"><strong>Note:</strong> In order for the log file to actually be written, the
- "logs" folder must be writable.  In addition, you must set the "threshold" for logging in <dfn>application/config/config.php</dfn>.
+ "logs" folder must be writable. In addition, you must set the "threshold" for logging in <dfn>application/config/config.php</dfn>.
 You might, for example, only want error messages to be logged, and not the other two types.
 If you set it to zero logging will be disabled.</p>
 
diff --git a/user_guide/general/helpers.html b/user_guide/general/helpers.html
index 339a0df..99f4717 100644
--- a/user_guide/general/helpers.html
+++ b/user_guide/general/helpers.html
@@ -57,20 +57,20 @@
 
 <h1>Helper Functions</h1>
 
-<p>Helpers, as the name suggests, help you with tasks.  Each helper file is simply a collection of functions in a particular
-category.  There are <dfn>URL Helpers</dfn>, that assist in creating links, there are <dfn>Form Helpers</dfn>
+<p>Helpers, as the name suggests, help you with tasks. Each helper file is simply a collection of functions in a particular
+category. There are <dfn>URL Helpers</dfn>, that assist in creating links, there are <dfn>Form Helpers</dfn>
 that help you create form elements, <dfn>Text Helpers</dfn> perform various text formatting routines,
 <dfn>Cookie Helpers</dfn> set and read cookies, <dfn>File Helpers</dfn> help you deal with files, etc.
 </p>
 
-<p>Unlike most other systems in CodeIgniter, Helpers are not written in an Object Oriented format.  They are simple, procedural functions.
+<p>Unlike most other systems in CodeIgniter, Helpers are not written in an Object Oriented format. They are simple, procedural functions.
 Each helper function performs one specific task, with no dependence on other functions.</p>
 
 <p>CodeIgniter does not load Helper Files by default, so the first step in using
-a Helper is to load it.  Once loaded, it becomes globally available in your <a href="../general/controllers.html">controller</a> and <a href="../general/views.html">views</a>.</p>
+a Helper is to load it. Once loaded, it becomes globally available in your <a href="../general/controllers.html">controller</a> and <a href="../general/views.html">views</a>.</p>
 
 <p>Helpers are typically stored in your <dfn>system/helpers</dfn>, or <dfn>application/helpers </dfn>directory.	CodeIgniter will look first in your <dfn>application/helpers</dfn>
-directory.  If the directory does not exist or the specified helper is not located there CI will instead look in your global
+directory. If the directory does not exist or the specified helper is not located there CI will instead look in your global
 <dfn>system/helpers</dfn> folder.</p>
 
 
@@ -87,10 +87,10 @@
 <code>$this->load->helper('<var>url</var>');</code>
 
 <p>A helper can be loaded anywhere within your controller functions (or even within your View files, although that's not a good practice),
-as long as you load it before you use it.  You can load your helpers in your controller constructor so that they become available
+as long as you load it before you use it. You can load your helpers in your controller constructor so that they become available
 automatically in any function, or you can load a helper in a specific function that needs it.</p>
 
-<p class="important">Note: The Helper loading function above does not return a value, so don't try to assign it to a variable.  Just use it as shown.</p>
+<p class="important">Note: The Helper loading function above does not return a value, so don't try to assign it to a variable. Just use it as shown.</p>
 
 
 <h2>Loading Multiple Helpers</h2>
@@ -117,12 +117,12 @@
 
 <h2>"Extending" Helpers</h2>
 
-<p>To "extend" Helpers, create a file in your <dfn>application/helpers/</dfn> folder with an identical name to the existing Helper, but prefixed with <kbd>MY_</kbd> (this item is configurable.  See below.).</p>
+<p>To "extend" Helpers, create a file in your <dfn>application/helpers/</dfn> folder with an identical name to the existing Helper, but prefixed with <kbd>MY_</kbd> (this item is configurable. See below.).</p>
 
 <p>If all you need to do is add some functionality to an existing helper - perhaps add a function or two, or change how a particular
-	helper function operates - then it's overkill to replace the entire helper with your version.  In this case it's better to simply
-	"extend" the Helper.  The term "extend" is used loosely since Helper functions are procedural and discrete and cannot be extended
-	in the traditional programmatic sense.  Under the hood, this gives you the ability to add to the functions a Helper provides,
+	helper function operates - then it's overkill to replace the entire helper with your version. In this case it's better to simply
+	"extend" the Helper. The term "extend" is used loosely since Helper functions are procedural and discrete and cannot be extended
+	in the traditional programmatic sense. Under the hood, this gives you the ability to add to the functions a Helper provides,
 	or to modify how the native Helper functions operate.</p>
 
 <p>For example, to extend the native <kbd>Array Helper</kbd> you'll create a file named <dfn>application/helpers/</dfn><kbd>MY_array_helper.php</kbd>, and add or override functions:</p>
@@ -154,7 +154,7 @@
 
 <h3>Setting Your Own Prefix</h3>
 
-<p>The filename prefix for "extending" Helpers is the same used to extend libraries and Core classes.  To set your own prefix, open your <dfn>application/config/config.php</dfn> file and look for this item:</p>
+<p>The filename prefix for "extending" Helpers is the same used to extend libraries and Core classes. To set your own prefix, open your <dfn>application/config/config.php</dfn> file and look for this item:</p>
 
 <code>$config['subclass_prefix'] = 'MY_';</code>
 
@@ -163,7 +163,7 @@
 
 <h2>Now What?</h2>
 
-<p>In the Table of Contents you'll find a list of all the available Helper Files.  Browse each one to see what they do.</p>
+<p>In the Table of Contents you'll find a list of all the available Helper Files. Browse each one to see what they do.</p>
 
 
 </div>
diff --git a/user_guide/general/hooks.html b/user_guide/general/hooks.html
index 11de409..1293d12 100644
--- a/user_guide/general/hooks.html
+++ b/user_guide/general/hooks.html
@@ -73,7 +73,7 @@
 
 <h2>Defining a Hook</h2>
 
-<p>Hooks are defined in <dfn>application/config/hooks.php</dfn> file.  Each hook is specified as an array with this prototype:</p>
+<p>Hooks are defined in <dfn>application/config/hooks.php</dfn> file. Each hook is specified as an array with this prototype:</p>
 
 <code>
 $hook['pre_controller'] = array(<br />
@@ -85,14 +85,14 @@
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</code>
 
 <p><strong>Notes:</strong><br />The array index correlates to the name of the particular hook point you want to
-use.  In the above example the hook point is <kbd>pre_controller</kbd>. A list of hook points is found below.
+use. In the above example the hook point is <kbd>pre_controller</kbd>. A list of hook points is found below.
 The following items should be defined in your associative hook array:</p>
 
 <ul>
 <li><strong>class</strong>&nbsp; The name of the class you wish to invoke. If you prefer to use a procedural function instead of a class, leave this item blank.</li>
 <li><strong>function</strong>&nbsp; The function name you wish to call.</li>
 <li><strong>filename</strong>&nbsp; The file name containing your class/function.</li>
-<li><strong>filepath</strong>&nbsp; The name of the directory containing your script.  Note: Your script must be located in a directory INSIDE your <kbd>application</kbd> folder, so the file path is relative to that folder.  For example, if your script is located in <dfn>application/hooks</dfn>, you will simply use <samp>hooks</samp> as your filepath.  If your script is located in <dfn>application/hooks/utilities</dfn> you will use <samp>hooks/utilities</samp> as your filepath. No trailing slash.</li>
+<li><strong>filepath</strong>&nbsp; The name of the directory containing your script. Note: Your script must be located in a directory INSIDE your <kbd>application</kbd> folder, so the file path is relative to that folder. For example, if your script is located in <dfn>application/hooks</dfn>, you will simply use <samp>hooks</samp> as your filepath. If your script is located in <dfn>application/hooks/utilities</dfn> you will use <samp>hooks/utilities</samp> as your filepath. No trailing slash.</li>
 <li><strong>params</strong>&nbsp; Any parameters you wish to pass to your script. This item is optional.</li>
 </ul>
 
@@ -122,7 +122,7 @@
 
 <code>$hook['pre_controller']<kbd>[]</kbd></code>
 
-<p>This permits you to have the same hook point with multiple scripts.  The order you define your array will be the execution order.</p>
+<p>This permits you to have the same hook point with multiple scripts. The order you define your array will be the execution order.</p>
 
 
 <h2>Hook Points</h2>
@@ -131,7 +131,7 @@
 
 <ul>
 		<li><strong>pre_system</strong><br />
-			Called very early during system execution.  Only the benchmark and hooks class have been loaded at this point. No routing or other processes have happened.</li>
+			Called very early during system execution. Only the benchmark and hooks class have been loaded at this point. No routing or other processes have happened.</li>
 		<li><strong>pre_controller</strong><br />
 			Called immediately prior to any of your controllers being called. All base classes, routing, and security checks have been done.</li>
 		<li><strong>post_controller_constructor</strong><br />
@@ -139,10 +139,10 @@
 		<li><strong>post_controller</strong><br />
 			Called immediately after your controller is fully executed.</li>
 		<li><strong>display_override</strong><br />
-			Overrides the <dfn>_display()</dfn> function, used to send the finalized page to the web browser at the end of system execution.  This permits you to
-			use your own display methodology.  Note that you will need to reference the CI superobject with <dfn>$this->CI =&amp; get_instance()</dfn> and then the finalized data will be available by calling <dfn>$this->CI->output->get_output()</dfn></li>
+			Overrides the <dfn>_display()</dfn> function, used to send the finalized page to the web browser at the end of system execution. This permits you to
+			use your own display methodology. Note that you will need to reference the CI superobject with <dfn>$this->CI =&amp; get_instance()</dfn> and then the finalized data will be available by calling <dfn>$this->CI->output->get_output()</dfn></li>
 		<li><strong>cache_override</strong><br />
-			Enables you to call your own function instead of the <dfn>_display_cache()</dfn> function in the output class.  This permits you to use your own cache display mechanism.</li>
+			Enables you to call your own function instead of the <dfn>_display_cache()</dfn> function in the output class. This permits you to use your own cache display mechanism.</li>
 		<li><strong>post_system</strong><br />
 			Called after the final rendered page is sent to the browser, at the end of system execution after the finalized data is sent to the browser.</li>
 	</ul>
diff --git a/user_guide/general/libraries.html b/user_guide/general/libraries.html
index ce367cd..ff86924 100644
--- a/user_guide/general/libraries.html
+++ b/user_guide/general/libraries.html
@@ -63,7 +63,7 @@
 
 <code>$this->load->library('<var>class name</var>'); </code>
 
-<p>Where <var>class name</var> is the name of the class you want to invoke.  For example, to load the form validation class you would do this:</p>
+<p>Where <var>class name</var> is the name of the class you want to invoke. For example, to load the form validation class you would do this:</p>
 
 <code>$this->load->library('<var>form_validation</var>'); </code>
 
diff --git a/user_guide/general/managing_apps.html b/user_guide/general/managing_apps.html
index ea886d9..a6f9b72 100644
--- a/user_guide/general/managing_apps.html
+++ b/user_guide/general/managing_apps.html
@@ -58,7 +58,7 @@
 <h1>Managing your Applications</h1>
 
 <p>By default it is assumed that you only intend to use CodeIgniter to manage one application, which you will build in your
-<dfn>application/</dfn> directory.  It is possible, however, to have multiple sets of applications that share a single
+<dfn>application/</dfn> directory. It is possible, however, to have multiple sets of applications that share a single
 CodeIgniter installation, or even to rename or relocate your <dfn>application</dfn> folder.</p>
 
 <h2>Renaming the Application Folder</h2>
@@ -83,7 +83,7 @@
 put all of the directories located inside your <kbd>application</kbd> folder into their
 own sub-folder.</p>
 
-<p>For example, let's say you want to create two applications, "foo" and "bar".  You could structure your
+<p>For example, let's say you want to create two applications, "foo" and "bar". You could structure your
 application folders like this:</p>
 
 <code>applications/<var>foo</var>/<br />
@@ -103,12 +103,12 @@
 
 
 <p>To select a particular application for use requires that you open your main <kbd>index.php</kbd> file and set the <dfn>$application_folder</dfn>
-variable.  For example, to select the "foo" application for use you would do this:</p>
+variable. For example, to select the "foo" application for use you would do this:</p>
 
 <code>$application_folder = "applications/foo";</code>
 
 <p class="important"><strong>Note:</strong>&nbsp; Each of your applications will need its own <dfn>index.php</dfn> file which
-calls the desired application.  The index.php file can be named anything you want.</p>
+calls the desired application. The index.php file can be named anything you want.</p>
 
 
 
diff --git a/user_guide/general/models.html b/user_guide/general/models.html
index 117c810..c0e4943 100644
--- a/user_guide/general/models.html
+++ b/user_guide/general/models.html
@@ -72,8 +72,8 @@
 
 <h2><a name="what"></a>What is a Model?</h2>
 
-<p>Models are PHP classes that are designed to work with information in your database.  For example, let's say
-you use CodeIgniter to manage a blog.  You might have a model class that contains functions to insert, update, and
+<p>Models are PHP classes that are designed to work with information in your database. For example, let's say
+you use CodeIgniter to manage a blog. You might have a model class that contains functions to insert, update, and
 retrieve your blog data. Here is an example of what such a model class might look like:</p>
 
 <code>
@@ -116,10 +116,10 @@
 }</code>
 
 <p>Note: The functions in the above example use the <a href="../database/active_record.html">Active Record</a> database functions.</p>
-<p class="important"><strong>Note:</strong> For the sake of simplicity in this example we're using $_POST directly.  This is generally bad practice, and a more common approach would be to use the <a href="../libraries/input.html">Input Class</a> $this-&gt;input-&gt;post('title')</p>
+<p class="important"><strong>Note:</strong> For the sake of simplicity in this example we're using $_POST directly. This is generally bad practice, and a more common approach would be to use the <a href="../libraries/input.html">Input Class</a> $this-&gt;input-&gt;post('title')</p>
 <h2><a name="anatomy"></a>Anatomy of a Model</h2>
 
-<p>Model classes are stored in your <dfn>application/models/</dfn> folder.  They can be nested within sub-folders if you
+<p>Model classes are stored in your <dfn>application/models/</dfn> folder. They can be nested within sub-folders if you
 want this type of organization.</p>
 
 <p>The basic prototype for a model class is this:</p>
@@ -134,10 +134,10 @@
 &nbsp;&nbsp;&nbsp;&nbsp;}<br />
 }</code>
 
-<p>Where <var>Model_name</var> is the name of your class.  Class names <strong>must</strong> have the first letter capitalized with the rest of the name lowercase.
+<p>Where <var>Model_name</var> is the name of your class. Class names <strong>must</strong> have the first letter capitalized with the rest of the name lowercase.
 Make sure your class extends the base Model class.</p>
 
-<p>The file name will be a lower case version of your class name.  For example, if your class is this:</p>
+<p>The file name will be a lower case version of your class name. For example, if your class is this:</p>
 
 <code>
 class&nbsp;<var>User_model</var>&nbsp;extends&nbsp;CI_Model&nbsp;{<br />
@@ -161,7 +161,7 @@
 
 <code>$this->load->model('<var>Model_name</var>');</code>
 
-<p>If your model is located in a sub-folder, include the relative path from your models folder.  For example, if
+<p>If your model is located in a sub-folder, include the relative path from your models folder. For example, if
 you have a model located at <dfn>application/models/blog/queries.php</dfn> you'll load it using:</p>
 
 <code>$this->load->model('<var>blog/queries</var>');</code>
@@ -200,12 +200,12 @@
 }</code>
 
 <h2><a name="auto_load_model" id="auto_load_model"></a>Auto-loading Models</h2>
-<p>If you find that you need a particular model globally throughout your  application, you can tell CodeIgniter to auto-load it during system  initialization.  This is done by opening the application/config/autoload.php file and adding the model to the autoload array.</p>
+<p>If you find that you need a particular model globally throughout your application, you can tell CodeIgniter to auto-load it during system initialization. This is done by opening the application/config/autoload.php file and adding the model to the autoload array.</p>
 
 
 <h2><a name="conn"></a>Connecting to your Database</h2>
 
-<p>When a model is loaded it does <strong>NOT</strong> connect automatically to your database.  The following options for connecting are available to you:</p>
+<p>When a model is loaded it does <strong>NOT</strong> connect automatically to your database. The following options for connecting are available to you:</p>
 
 <ul>
 <li>You can connect using the standard database methods <a href="../database/connecting.html">described here</a>, either from within your Controller class or your Model class.</li>
diff --git a/user_guide/general/profiling.html b/user_guide/general/profiling.html
index 78ece7d..fdf8b6c 100644
--- a/user_guide/general/profiling.html
+++ b/user_guide/general/profiling.html
@@ -87,7 +87,7 @@
 
 <h2>Enabling and Disabling Profiler Sections</h2>
 
-	<p>Each section of Profiler data can be enabled or disabled by setting a corresponding config variable to <var>TRUE</var> or <var>FALSE</var>.  This can be done one of two ways.  First, you can set application wide defaults with the <dfn>application/config/profiler.php</dfn> config file.</p>
+	<p>Each section of Profiler data can be enabled or disabled by setting a corresponding config variable to <var>TRUE</var> or <var>FALSE</var>. This can be done one of two ways. First, you can set application wide defaults with the <dfn>application/config/profiler.php</dfn> config file.</p>
 
 	<code>$config['config']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FALSE;<br />
 	$config['queries']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FALSE;<br /></code>
diff --git a/user_guide/general/reserved_names.html b/user_guide/general/reserved_names.html
index 00bebff..48b6b2a 100644
--- a/user_guide/general/reserved_names.html
+++ b/user_guide/general/reserved_names.html
@@ -61,8 +61,8 @@
 <h3>Controller names</h3>
 <p>Since your controller classes will extend the main application controller you
 must be careful not to name your functions identically to the ones used by that class, otherwise your local functions
-will override them.  The following
-is a list of reserved names.  Do not name your controller any of these:</p>
+will override them. The following
+is a list of reserved names. Do not name your controller any of these:</p>
 <ul>
 	<li>Controller</li>
 	<li>CI_Base</li>
diff --git a/user_guide/general/routing.html b/user_guide/general/routing.html
index d1d8d1a..6f06ad6 100644
--- a/user_guide/general/routing.html
+++ b/user_guide/general/routing.html
@@ -80,7 +80,7 @@
 
 <h2>Setting your own routing rules</h2>
 
-<p>Routing rules are defined in your <var>application/config/routes.php</var> file.  In it you'll see an array called <dfn>$route</dfn> that
+<p>Routing rules are defined in your <var>application/config/routes.php</var> file. In it you'll see an array called <dfn>$route</dfn> that
 permits you to specify your own routing criteria. Routes can either be specified using <dfn>wildcards</dfn> or <dfn>Regular Expressions</dfn></p>
 
 
@@ -90,7 +90,7 @@
 
 <code>$route['product/:num'] = "catalog/product_lookup";</code>
 
-<p>In a route, the array key contains the URI to be matched, while the array value  contains the destination it should be re-routed to.
+<p>In a route, the array key contains the URI to be matched, while the array value contains the destination it should be re-routed to.
 In the above example, if the literal word "product" is found in the first segment of the URL, and a number is found in the second segment,
 the "catalog" class and the "product_lookup" method are instead used.</p>
 
@@ -111,10 +111,10 @@
 <p>A URL containing the word "journals" in the first segment will be remapped to the "blogs" class.</p>
 
 <code>$route['blog/joe'] = "blogs/users/34";</code>
-<p>A URL containing the segments blog/joe will be remapped to the "blogs" class and the "users" method.  The ID will be set to "34".</p>
+<p>A URL containing the segments blog/joe will be remapped to the "blogs" class and the "users" method. The ID will be set to "34".</p>
 
 <code>$route['product/(:any)'] = "catalog/product_lookup";</code>
-<p>A URL with "product" as the first segment, and anything in the second will be remapped to the "catalog" class and the  "product_lookup" method.</p>
+<p>A URL with "product" as the first segment, and anything in the second will be remapped to the "catalog" class and the "product_lookup" method.</p>
 
 <code>$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";</code>
 <p>A URL with "product" as the first segment, and a number in the second will be remapped to the "catalog" class and the "product_lookup_by_id" method passing in the match as a variable to the function.</p>
@@ -123,7 +123,7 @@
 
 <h2>Regular Expressions</h2>
 
-<p>If you prefer you can use regular expressions to define your routing rules.  Any valid regular expression is allowed, as are back-references.</p>
+<p>If you prefer you can use regular expressions to define your routing rules. Any valid regular expression is allowed, as are back-references.</p>
 
 <p class="important"><strong>Note:</strong>&nbsp; If you use back-references you must use the dollar syntax rather than the double backslash syntax.</p>
 
@@ -142,7 +142,7 @@
 <code>$route['default_controller'] = 'welcome';</code>
 
 <p>This route indicates which controller class should be loaded if the URI contains no data, which will be the case
-when people load your root URL. In the above example, the "welcome" class would be loaded.  You
+when people load your root URL. In the above example, the "welcome" class would be loaded. You
 are encouraged to always have a default route otherwise a 404 page will appear by default.</p>
 
 <code>$route['404_override'] = '';</code>
diff --git a/user_guide/general/security.html b/user_guide/general/security.html
index ab92a94..bcbb36c 100644
--- a/user_guide/general/security.html
+++ b/user_guide/general/security.html
@@ -64,7 +64,7 @@
 <h2>URI Security</h2>
 
 <p>CodeIgniter is fairly restrictive regarding which characters it allows in your URI strings in order to help
-minimize the possibility that malicious data can be passed to your application.  URIs may only contain the following:
+minimize the possibility that malicious data can be passed to your application. URIs may only contain the following:
 </p>
 
 <ul>
@@ -79,7 +79,7 @@
 <h2>GET, POST, and COOKIE Data</h2>
 
 <p>GET data is simply disallowed by CodeIgniter since the system utilizes URI segments rather than traditional URL query strings (unless
-you have the query string option enabled in your config file).  The global GET
+you have the query string option enabled in your config file). The global GET
 array is <strong>unset</strong> by the Input class during system initialization.</p>
 
 <h2>Register_globals</h2>
@@ -91,18 +91,18 @@
 <h2>error_reporting</h2>
 
 <p>
-    In production environments, it is typically desirable to disable PHP's 
-    error reporting by setting the internal error_reporting flag to a value of 0. This disables native PHP
-    errors from being rendered as output, which may potentially contain
-    sensitive information.
+  In production environments, it is typically desirable to disable PHP's
+  error reporting by setting the internal error_reporting flag to a value of 0. This disables native PHP
+  errors from being rendered as output, which may potentially contain
+  sensitive information.
 </p>
 
 <p>
-    Setting CodeIgniter's <kbd>ENVIRONMENT</kbd> constant in index.php to a
-    value of '<kbd>production</kbd>' will turn off these errors. In development
-    mode, it is recommended that a value of '<kbd>development</kbd>' is used.
-    More information about differentiating between environments can be found
-    on the <a href="environments.html">Handling Environments</a> page.
+  Setting CodeIgniter's <kbd>ENVIRONMENT</kbd> constant in index.php to a
+  value of '<kbd>production</kbd>' will turn off these errors. In development
+  mode, it is recommended that a value of '<kbd>development</kbd>' is used.
+  More information about differentiating between environments can be found
+  on the <a href="environments.html">Handling Environments</a> page.
 </p>
 
 <h2>magic_quotes_runtime</h2>
@@ -117,7 +117,7 @@
 
 <ol>
 <li>Filter the data as if it were tainted.</li>
-<li>Validate the data to ensure it conforms to the correct  type, length, size, etc. (sometimes this step can replace step one)</li>
+<li>Validate the data to ensure it conforms to the correct type, length, size, etc. (sometimes this step can replace step one)</li>
 <li>Escape the data before submitting it into your database.</li>
 </ol>
 
@@ -127,7 +127,7 @@
 
 <li><h2>XSS Filtering</h2>
 
-<p>CodeIgniter comes with a Cross Site Scripting filter.  This filter looks for commonly
+<p>CodeIgniter comes with a Cross Site Scripting filter. This filter looks for commonly
 used techniques to embed malicious Javascript into your data, or other types of code that attempt to hijack cookies
 or do other malicious things. The XSS Filter is described <a href="../libraries/security.html">here</a>.
 </p>
diff --git a/user_guide/general/styleguide.html b/user_guide/general/styleguide.html
index 1f7a8a0..fc9ceb2 100644
--- a/user_guide/general/styleguide.html
+++ b/user_guide/general/styleguide.html
@@ -102,13 +102,13 @@
 
 		<h2><a name="file_format"></a>File Format</h2>
 		<div class="guidelineDetails">
-			<p>Files should be saved with Unicode (UTF-8) encoding.  The <abbr title="Byte Order Mark">BOM</abbr>
-				should <em>not</em> be used.  Unlike UTF-16 and UTF-32, there's no byte order to indicate in
+			<p>Files should be saved with Unicode (UTF-8) encoding. The <abbr title="Byte Order Mark">BOM</abbr>
+				should <em>not</em> be used. Unlike UTF-16 and UTF-32, there's no byte order to indicate in
 				a UTF-8 encoded file, and the <abbr title="Byte Order Mark">BOM</abbr> can have a negative side effect in PHP of sending output,
-				preventing the application from being able to set its own headers.  Unix line endings should
+				preventing the application from being able to set its own headers. Unix line endings should
 				be used (LF).</p>
 
-			<p>Here is how to apply these settings in some of the more common text editors.  Instructions for your
+			<p>Here is how to apply these settings in some of the more common text editors. Instructions for your
 				text editor may vary; check your text editor's documentation.</p>
 
 			<h5>TextMate</h5>
@@ -137,8 +137,8 @@
 
 		<h2><a name="php_closing_tag"></a>PHP Closing Tag</h2>
 		<div class="guidelineDetails">
-			<p>The PHP closing tag on a PHP document <strong>?&gt;</strong> is optional to the PHP parser.  However, if used, any whitespace following the closing tag, whether introduced
-				by the developer, user, or an FTP application, can cause unwanted output, PHP errors, or if the latter are suppressed, blank pages.  For this reason, all PHP files should
+			<p>The PHP closing tag on a PHP document <strong>?&gt;</strong> is optional to the PHP parser. However, if used, any whitespace following the closing tag, whether introduced
+				by the developer, user, or an FTP application, can cause unwanted output, PHP errors, or if the latter are suppressed, blank pages. For this reason, all PHP files should
 				<strong>OMIT</strong> the closing PHP tag, and instead use a comment block to mark the end of file and it's location relative to the application root.
 				This allows you to still identify a file as being complete and not truncated.</p>
 <code><strong>INCORRECT</strong>:
@@ -161,7 +161,7 @@
 
 		<h2><a name="class_and_method_naming"></a>Class and Method Naming</h2>
 		<div class="guidelineDetails">
-			<p>Class names should always start with an uppercase letter.  Multiple words should be separated with an underscore, and not CamelCased.  All other class methods should be entirely lowercased and named to clearly indicate their function, preferably including a verb.  Try to avoid overly long and verbose names.</p>
+			<p>Class names should always start with an uppercase letter. Multiple words should be separated with an underscore, and not CamelCased. All other class methods should be entirely lowercased and named to clearly indicate their function, preferably including a verb. Try to avoid overly long and verbose names.</p>
 
 	<code><strong>INCORRECT</strong>:
 class superclass
@@ -184,7 +184,7 @@
 	<code><strong>INCORRECT</strong>:
 function fileproperties()		// not descriptive and needs underscore separator
 function fileProperties()		// not descriptive and uses CamelCase
-function getfileproperties()		// Better!  But still missing underscore separator
+function getfileproperties()		// Better! But still missing underscore separator
 function getFileProperties()		// uses CamelCase
 function get_the_file_properties_from_the_file()	// wordy
 
@@ -196,7 +196,7 @@
 
 		<h2><a name="variable_names"></a>Variable Names</h2>
 		<div class="guidelineDetails">
-			<p>The guidelines for variable naming is very similar to that used for class methods.  Namely, variables should contain only lowercase letters, use underscore separators, and be reasonably named to indicate their purpose and contents. Very short, non-word variables should only be used as iterators in for() loops.</p>
+			<p>The guidelines for variable naming is very similar to that used for class methods. Namely, variables should contain only lowercase letters, use underscore separators, and be reasonably named to indicate their purpose and contents. Very short, non-word variables should only be used as iterators in for() loops.</p>
 <code><strong>INCORRECT</strong>:
 $j = &apos;foo&apos;;		// single letter variables should only be used in for() loops
 $Str			// contains uppercase letters
@@ -216,7 +216,7 @@
 
 		<h2><a name="commenting"></a>Commenting</h2>
 		<div class="guidelineDetails">
-			<p>In general, code should be commented prolifically.  It not only helps describe the flow and intent of the code for less experienced programmers, but can prove invaluable when returning to your own code months down the line.  There is not a required format for comments, but the following are recommended.</p>
+			<p>In general, code should be commented prolifically. It not only helps describe the flow and intent of the code for less experienced programmers, but can prove invaluable when returning to your own code months down the line. There is not a required format for comments, but the following are recommended.</p>
 
 			<p><a href="http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.docblock">DocBlock</a> style comments preceding class and method declarations so they can be picked up by IDEs:</p>
 
@@ -246,9 +246,9 @@
 $parts = explode("\n", $str);
 
 // A longer comment that needs to give greater detail on what is
-// occurring and why can use multiple single-line comments.  Try to
+// occurring and why can use multiple single-line comments. Try to
 // keep the width reasonable, around 70 characters is the easiest to
-// read.  Don't hesitate to link to permanent external resources
+// read. Don't hesitate to link to permanent external resources
 // that may provide greater detail:
 //
 // http://example.com/information_about_something/in_particular/
@@ -260,7 +260,7 @@
 
 		<h2><a name="constants"></a>Constants</h2>
 		<div class="guidelineDetails">
-			<p>Constants follow the same guidelines as do variables, except constants should always be fully uppercase.  <em>Always use CodeIgniter constants when appropriate, i.e. SLASH, LD, RD, PATH_CACHE, etc.</em></p>
+			<p>Constants follow the same guidelines as do variables, except constants should always be fully uppercase. <em>Always use CodeIgniter constants when appropriate, i.e. SLASH, LD, RD, PATH_CACHE, etc.</em></p>
 <code><strong>INCORRECT</strong>:
 myConstant	// missing underscore separator and not fully uppercase
 N		// no single-letter constants
@@ -298,7 +298,7 @@
 				<strong>&amp;&amp;</strong> is preferred over <strong>AND</strong> but either are acceptable, and a space should always precede and follow <strong>!</strong>.</p>
 <code><strong>INCORRECT</strong>:
 if ($foo || $bar)
-if ($foo AND $bar)  // okay but not recommended for common syntax highlighting applications
+if ($foo AND $bar) // okay but not recommended for common syntax highlighting applications
 if (!$foo)
 if (! is_array($foo))
 
@@ -314,8 +314,8 @@
 
 		<h2><a name="comparing_return_values_and_typecasting"></a>Comparing Return Values and Typecasting</h2>
 		<div class="guidelineDetails">
-			<p>Some PHP functions return FALSE on failure, but may also have a valid return value of "" or 0, which would evaluate to FALSE in loose comparisons.  Be explicit by comparing the variable type when using these return values in conditionals to ensure the return value is indeed what you expect, and not a value that has an equivalent loose-type evaluation.</p>
-			<p>Use the same stringency in returning and checking your own variables.  Use <strong>===</strong> and <strong>!==</strong> as necessary.
+			<p>Some PHP functions return FALSE on failure, but may also have a valid return value of "" or 0, which would evaluate to FALSE in loose comparisons. Be explicit by comparing the variable type when using these return values in conditionals to ensure the return value is indeed what you expect, and not a value that has an equivalent loose-type evaluation.</p>
+			<p>Use the same stringency in returning and checking your own variables. Use <strong>===</strong> and <strong>!==</strong> as necessary.
 
 <code><strong>INCORRECT</strong>:
 // If 'foo' is at the beginning of the string, strpos will return a 0,
@@ -329,7 +329,7 @@
 <code><strong>INCORRECT</strong>:
 function build_string($str = "")
 {
-	if ($str == "")	// uh-oh!  What if FALSE or the integer 0 is passed as an argument?
+	if ($str == "")	// uh-oh! What if FALSE or the integer 0 is passed as an argument?
 	{
 
 	}
@@ -344,7 +344,7 @@
 	}
 }</code>
 
-		<p>See also information regarding <a href="http://us3.php.net/manual/en/language.types.type-juggling.php#language.types.typecasting">typecasting</a>, which can be quite useful.  Typecasting has a slightly different effect which may be desirable.  When casting a variable as a string, for instance, NULL and boolean FALSE variables become empty strings, 0 (and other numbers) become strings of digits, and boolean TRUE becomes "1":</p>
+		<p>See also information regarding <a href="http://us3.php.net/manual/en/language.types.type-juggling.php#language.types.typecasting">typecasting</a>, which can be quite useful. Typecasting has a slightly different effect which may be desirable. When casting a variable as a string, for instance, NULL and boolean FALSE variables become empty strings, 0 (and other numbers) become strings of digits, and boolean TRUE becomes "1":</p>
 
 <code>$str = (string) $str;	// cast $str as a string</code>
 
@@ -362,7 +362,7 @@
 
 		<h2><a name="whitespace_in_files"></a>Whitespace in Files</h2>
 		<div class="guidelineDetails">
-			<p>No whitespace can precede the opening PHP tag or follow the closing PHP tag.  Output is buffered, so whitespace in your files can cause output to begin before CodeIgniter outputs its content, leading to errors and an inability for CodeIgniter to send proper headers.  In the examples below, select the text with your mouse to reveal the incorrect whitespace.</p>
+			<p>No whitespace can precede the opening PHP tag or follow the closing PHP tag. Output is buffered, so whitespace in your files can cause output to begin before CodeIgniter outputs its content, leading to errors and an inability for CodeIgniter to send proper headers. In the examples below, select the text with your mouse to reveal the incorrect whitespace.</p>
 
 			<p><strong>INCORRECT</strong>:</p>
 <code>
@@ -381,14 +381,14 @@
 
 		<h2><a name="compatibility"></a>Compatibility</h2>
 		<div class="guidelineDetails">
-			<p>Unless specifically mentioned in your add-on's documentation, all code must be compatible with PHP version 5.1+.  Additionally, do not use PHP functions that require non-default libraries to be installed unless your code contains an alternative method when the function is not available, or you implicitly document that your add-on requires said PHP libraries.</p>
+			<p>Unless specifically mentioned in your add-on's documentation, all code must be compatible with PHP version 5.1+. Additionally, do not use PHP functions that require non-default libraries to be installed unless your code contains an alternative method when the function is not available, or you implicitly document that your add-on requires said PHP libraries.</p>
 		</div>
 
 
 
 		<h2><a name="class_and_file_names_using_common_words"></a>Class and File Names using Common Words</h2>
 		<div class="guidelineDetails">
-			<p>When your class or filename is a common word, or might quite likely be identically named in another PHP script, provide a unique prefix to help prevent collision.  Always realize that your end users may be running other add-ons or third party PHP scripts.  Choose a prefix that is unique to your identity as a developer or company.</p>
+			<p>When your class or filename is a common word, or might quite likely be identically named in another PHP script, provide a unique prefix to help prevent collision. Always realize that your end users may be running other add-ons or third party PHP scripts. Choose a prefix that is unique to your identity as a developer or company.</p>
 
 <code><strong>INCORRECT</strong>:
 class Email		pi.email.php
@@ -405,7 +405,7 @@
 
 		<h2><a name="database_table_names"></a>Database Table Names</h2>
 		<div class="guidelineDetails">
-			<p>Any tables that your add-on might use must use the 'exp_' prefix, followed by a prefix uniquely identifying you as the developer or company, and then a short descriptive table name.  You do not need to be concerned about the database prefix being used on the user's installation, as CodeIgniter's database class will automatically convert 'exp_' to what is actually being used.</p>
+			<p>Any tables that your add-on might use must use the 'exp_' prefix, followed by a prefix uniquely identifying you as the developer or company, and then a short descriptive table name. You do not need to be concerned about the database prefix being used on the user's installation, as CodeIgniter's database class will automatically convert 'exp_' to what is actually being used.</p>
 
 <code><strong>INCORRECT</strong>:
 email_addresses		// missing both prefixes
@@ -416,35 +416,35 @@
 exp_pre_email_addresses
 </code>
 
-			<p class="important"><strong>NOTE:</strong> Be mindful that MySQL has a limit of 64 characters for table names.  This should not be an issue as table names that would exceed this would likely have unreasonable names.  For instance, the following table name exceeds this limitation by one character.  Silly, no? <strong>exp_pre_email_addresses_of_registered_users_in_seattle_washington</strong>
+			<p class="important"><strong>NOTE:</strong> Be mindful that MySQL has a limit of 64 characters for table names. This should not be an issue as table names that would exceed this would likely have unreasonable names. For instance, the following table name exceeds this limitation by one character. Silly, no? <strong>exp_pre_email_addresses_of_registered_users_in_seattle_washington</strong>
 		</div>
 
 
 
 		<h2><a name="one_file_per_class"></a>One File per Class</h2>
 		<div class="guidelineDetails">
-			<p>Use separate files for each class your add-on uses, unless the classes are <em>closely related</em>.  An example of CodeIgniter files that contains multiple classes is the Database class file, which contains both the DB class and the DB_Cache class, and the Magpie plugin, which contains both the Magpie and Snoopy classes.</p>
+			<p>Use separate files for each class your add-on uses, unless the classes are <em>closely related</em>. An example of CodeIgniter files that contains multiple classes is the Database class file, which contains both the DB class and the DB_Cache class, and the Magpie plugin, which contains both the Magpie and Snoopy classes.</p>
 		</div>
 
 
 
 		<h2><a name="whitespace"></a>Whitespace</h2>
 		<div class="guidelineDetails">
-			<p>Use tabs for whitespace in your code, not spaces.  This may seem like a small thing, but using tabs instead of whitespace allows the developer looking at your code to have indentation at levels that they prefer and customize in whatever application they use.  And as a side benefit, it results in (slightly) more compact files, storing one tab character versus, say, four space characters.</p>
+			<p>Use tabs for whitespace in your code, not spaces. This may seem like a small thing, but using tabs instead of whitespace allows the developer looking at your code to have indentation at levels that they prefer and customize in whatever application they use. And as a side benefit, it results in (slightly) more compact files, storing one tab character versus, say, four space characters.</p>
 		</div>
 
 
 
 		<h2><a name="line_breaks"></a>Line Breaks</h2>
 		<div class="guidelineDetails">
-			<p>Files must be saved with Unix line breaks.  This is more of an issue for developers who work in Windows, but in any case ensure that your text editor is setup to save files with Unix line breaks.</p>
+			<p>Files must be saved with Unix line breaks. This is more of an issue for developers who work in Windows, but in any case ensure that your text editor is setup to save files with Unix line breaks.</p>
 		</div>
 
 
 
 		<h2><a name="code_indenting"></a>Code Indenting</h2>
 		<div class="guidelineDetails">
-			<p>Use Allman style indenting.  With the exception of Class declarations, braces are always placed on a line by themselves, and indented at the same level as the control statement that "owns" them.</p>
+			<p>Use Allman style indenting. With the exception of Class declarations, braces are always placed on a line by themselves, and indented at the same level as the control statement that "owns" them.</p>
 
 <code><strong>INCORRECT</strong>:
 function foo($bar) {
@@ -501,7 +501,7 @@
 
 	<h2><a name="bracket_spacing"></a>Bracket and Parenthetic Spacing</h2>
 		<div class="guidelineDetails">
-			<p>In general, parenthesis and brackets should not use any additional spaces.  The exception is that a space should always follow PHP control structures that accept arguments with parenthesis (declare, do-while, elseif, for, foreach, if, switch, while), to help distinguish them from functions and increase readability.</p>
+			<p>In general, parenthesis and brackets should not use any additional spaces. The exception is that a space should always follow PHP control structures that accept arguments with parenthesis (declare, do-while, elseif, for, foreach, if, switch, while), to help distinguish them from functions and increase readability.</p>
 
 <code>INCORRECT:
 $arr[ $foo ] = 'foo';
@@ -558,9 +558,9 @@
 
 		<h2><a name="php_errors"></a>PHP Errors</h2>
 		<div class="guidelineDetails">
-			<p>Code must run error free and not rely on warnings and notices to be hidden to meet this requirement.  For instance, never access a variable that you did not set yourself (such as $_POST array keys) without first checking to see that it isset().</p>
+			<p>Code must run error free and not rely on warnings and notices to be hidden to meet this requirement. For instance, never access a variable that you did not set yourself (such as $_POST array keys) without first checking to see that it isset().</p>
 
-			<p>Make sure that while developing your add-on, error reporting is enabled for ALL users, and that display_errors is enabled in the PHP environment.  You can check this setting with:</p>
+			<p>Make sure that while developing your add-on, error reporting is enabled for ALL users, and that display_errors is enabled in the PHP environment. You can check this setting with:</p>
 
 <code>if (ini_get('display_errors') == 1)
 {
@@ -571,7 +571,7 @@
 
 <code>ini_set('display_errors', 1);</code>
 
-			<p class="important"><strong>NOTE:</strong> Setting the <a href="http://us.php.net/manual/en/ref.errorfunc.php#ini.display-errors">display_errors</a> setting with ini_set() at runtime is not identical to having it enabled in the PHP environment.  Namely, it will not have any effect if the script has fatal errors</p>
+			<p class="important"><strong>NOTE:</strong> Setting the <a href="http://us.php.net/manual/en/ref.errorfunc.php#ini.display-errors">display_errors</a> setting with ini_set() at runtime is not identical to having it enabled in the PHP environment. Namely, it will not have any effect if the script has fatal errors</p>
 		</div>
 
 
@@ -609,7 +609,7 @@
 
 		<h2><a name="strings"></a>Strings</h2>
 		<div class="guidelineDetails">
-			<p>Always use single quoted strings unless you need variables parsed, and in cases where you do need variables parsed, use braces to prevent greedy token parsing.  You may also use double-quoted strings if the string contains single quotes, so you do not have to use escape characters.</p>
+			<p>Always use single quoted strings unless you need variables parsed, and in cases where you do need variables parsed, use braces to prevent greedy token parsing. You may also use double-quoted strings if the string contains single quotes, so you do not have to use escape characters.</p>
 
 <code><strong>INCORRECT</strong>:
 "My String"					// no variable parsing, so no use for double quotes
diff --git a/user_guide/general/urls.html b/user_guide/general/urls.html
index 421f513..b975b70 100644
--- a/user_guide/general/urls.html
+++ b/user_guide/general/urls.html
@@ -58,7 +58,7 @@
 
 <h1>CodeIgniter URLs</h1>
 
-<p>By default, URLs in CodeIgniter are designed to be search-engine and human friendly.  Rather than using the standard "query string"
+<p>By default, URLs in CodeIgniter are designed to be search-engine and human friendly. Rather than using the standard "query string"
 approach to URLs that is synonymous with dynamic systems, CodeIgniter uses a <strong>segment-based</strong> approach:</p>
 
 <code>example.com/<var>news</var>/<dfn>article</dfn>/<samp>my_article</samp></code>
@@ -78,7 +78,7 @@
 </ol>
 
 <p>The <a href="../libraries/uri.html">URI Class</a> and the <a href="../helpers/url_helper.html">URL Helper</a>
-contain functions that make it easy to work with your URI data.  In addition, your URLs can be remapped using the
+contain functions that make it easy to work with your URI data. In addition, your URLs can be remapped using the
 <a href="routing.html">URI Routing</a> feature for more flexibility.</p>
 
 
@@ -103,7 +103,7 @@
 <h2>Adding a URL Suffix</h2>
 
 <p>In your <dfn>config/config.php</dfn> file you can specify a suffix that will be added to all URLs generated
-by CodeIgniter.  For example, if a URL is this:</p>
+by CodeIgniter. For example, if a URL is this:</p>
 
 <code>example.com/index.php/products/view/shoes</code>
 
@@ -125,7 +125,7 @@
 $config['controller_trigger'] = 'c';<br />
 $config['function_trigger'] = 'm';</code>
 
-<p>If you change "enable_query_strings" to TRUE this feature will become active.  Your controllers and functions will then
+<p>If you change "enable_query_strings" to TRUE this feature will become active. Your controllers and functions will then
 be accessible using the "trigger" words you've set to invoke your controllers and methods:</p>
 
 <code>index.php?c=controller&amp;m=method</code>
diff --git a/user_guide/general/views.html b/user_guide/general/views.html
index ad93f4b..ece7465 100644
--- a/user_guide/general/views.html
+++ b/user_guide/general/views.html
@@ -61,7 +61,7 @@
 In fact, views can flexibly be embedded within other views (within other views, etc., etc.) if you need this type
 of hierarchy.</p>
 
-<p>Views are never called directly, they must be loaded by a <a href="controllers.html">controller</a>.  Remember that in an MVC framework, the Controller acts as the
+<p>Views are never called directly, they must be loaded by a <a href="controllers.html">controller</a>. Remember that in an MVC framework, the Controller acts as the
 traffic cop, so it is responsible for fetching a particular view. If you have not read the <a href="controllers.html">Controllers</a> page
 you should do so before continuing.</p>
 
@@ -90,7 +90,7 @@
 
 <code>$this->load->view('<var>name</var>');</code>
 
-<p>Where <var>name</var> is the name of your view file.  Note: The .php file extension does not need to be specified unless you use something other than <kbd>.php</kbd>.</p>
+<p>Where <var>name</var> is the name of your view file. Note: The .php file extension does not need to be specified unless you use something other than <kbd>.php</kbd>.</p>
 
 
 <p>Now, open the controller file you made earlier called <dfn>blog.php</dfn>, and replace the echo statement with the view loading function:</p>
@@ -109,19 +109,19 @@
 </textarea>
 
 
-<p>If you visit your site using the URL you did earlier you should see your new view.  The URL was similar to this:</p>
+<p>If you visit your site using the URL you did earlier you should see your new view. The URL was similar to this:</p>
 
 <code>example.com/index.php/<var>blog</var>/</code>
 
 <h2>Loading multiple views</h2>
-<p>CodeIgniter will intelligently handle  multiple calls to $this-&gt;load-&gt;view from within a controller.  If more than one call happens they will be appended together. For example, you may wish to have a header view, a menu view, a content view, and a footer view. That might look something like this:</p>
+<p>CodeIgniter will intelligently handle multiple calls to $this-&gt;load-&gt;view from within a controller. If more than one call happens they will be appended together. For example, you may wish to have a header view, a menu view, a content view, and a footer view. That might look something like this:</p>
 <p><code>&lt;?php<br />
 <br />
 class Page extends CI_Controller {<br /><br />
 
  &nbsp;&nbsp;&nbsp;function index()<br />
 &nbsp;&nbsp;&nbsp;{<br />
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['page_title'] =  'Your title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['page_title'] = 'Your title';<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('header');<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('menu');<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('content', $data);<br />
@@ -132,8 +132,8 @@
 	?&gt;</code></p>
 <p>In the example above, we are using &quot;dynamically added data&quot;, which you will see below.</p>
 <h2>Storing Views within Sub-folders</h2>
-<p>Your view files can also be stored within sub-folders if you prefer that type of organization.  When doing so you will need
-to include the folder name loading the view.  Example:</p>
+<p>Your view files can also be stored within sub-folders if you prefer that type of organization. When doing so you will need
+to include the folder name loading the view. Example:</p>
 
 <code>$this->load->view('<kbd>folder_name</kbd>/<var>file_name</var>');</code>
 
@@ -159,7 +159,7 @@
 <p>Note: If you use an object, the class variables will be turned into array elements.</p>
 
 
-<p>Let's try it with your controller file.  Open it add this code:</p>
+<p>Let's try it with your controller file. Open it add this code:</p>
 
 <textarea class="textarea" style="width:100%" cols="50" rows="14">
 &lt;?php
@@ -195,8 +195,8 @@
 
 <h2>Creating Loops</h2>
 
-<p>The data array you pass to your view files is not limited to simple variables.  You can
-pass multi dimensional arrays, which can be looped to generate multiple rows.  For example, if you
+<p>The data array you pass to your view files is not limited to simple variables. You can
+pass multi dimensional arrays, which can be looped to generate multiple rows. For example, if you
 pull data from your database it will typically be in the form of a multi-dimensional array.</p>
 
 <p>Here's a simple example. Add this to your controller:</p>
@@ -243,15 +243,15 @@
 &lt;/body>
 &lt;/html>
 </textarea>
-<p><strong>Note:</strong> You'll notice that in the example above we are using PHP's alternative syntax.  If you
+<p><strong>Note:</strong> You'll notice that in the example above we are using PHP's alternative syntax. If you
 are not familiar with it you can read about it <a href="alternative_php.html">here</a>.</p>
 
 <h2>Returning views as data</h2>
 
 <p>There is a third <strong>optional</strong> parameter lets you change the behavior of the function so that it returns data as a string
-rather than sending it to your browser.  This can be useful if you want to process the data in some way.  If you
-set the parameter to <kbd>true</kbd> (boolean) it will return data.  The default behavior is <kbd>false</kbd>, which sends it
-to your browser.  Remember to assign it to a variable if you want the data returned:</p>
+rather than sending it to your browser. This can be useful if you want to process the data in some way. If you
+set the parameter to <kbd>true</kbd> (boolean) it will return data. The default behavior is <kbd>false</kbd>, which sends it
+to your browser. Remember to assign it to a variable if you want the data returned:</p>
 
 <code>$string = $this->load->view('<var>myfile</var>', '', <kbd>true</kbd>);</code>
 
diff --git a/user_guide/helpers/array_helper.html b/user_guide/helpers/array_helper.html
index a196214..88e8384 100644
--- a/user_guide/helpers/array_helper.html
+++ b/user_guide/helpers/array_helper.html
@@ -70,8 +70,8 @@
 
 <h2>element()</h2>
 
-<p>Lets you fetch an item from an array.  The function tests whether the array index is set and whether it has a value.  If
-a value exists it is returned.  If a value does not exist it returns FALSE, or whatever you've specified as the default value via the third parameter.  Example:</p>
+<p>Lets you fetch an item from an array. The function tests whether the array index is set and whether it has a value. If
+a value exists it is returned. If a value does not exist it returns FALSE, or whatever you've specified as the default value via the third parameter. Example:</p>
 
 <code>
 $array = array('color' => 'red', 'shape' => 'round', 'size' => '');<br />
@@ -86,7 +86,7 @@
 
 <h2>random_element()</h2>
 
-<p>Takes an array as input and returns a random element from it.  Usage example:</p>
+<p>Takes an array as input and returns a random element from it. Usage example:</p>
 
 <code>$quotes = array(<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"I find that the harder I work, the more luck I seem to have. - Thomas Jefferson",<br />
@@ -102,8 +102,8 @@
 
 <h2>elements()</h2>
 
-<p>Lets you fetch a number of items from an array.  The function tests whether each of the array indices is set.  If an index does not exist
-it is set to FALSE, or whatever you've specified as the default value via the third parameter.  Example:</p>
+<p>Lets you fetch a number of items from an array. The function tests whether each of the array indices is set. If an index does not exist
+it is set to FALSE, or whatever you've specified as the default value via the third parameter. Example:</p>
 
 <code>
 $array = array(<br />
@@ -142,7 +142,7 @@
 );
 </code>
 
-<p>This is useful when sending the <kbd>$_POST</kbd> array to one of your Models.  This prevents users from
+<p>This is useful when sending the <kbd>$_POST</kbd> array to one of your Models. This prevents users from
 sending additional POST data to be entered into your tables:</p>
 
 <code>
diff --git a/user_guide/helpers/captcha_helper.html b/user_guide/helpers/captcha_helper.html
index 2fd5a55..3c6fa11 100644
--- a/user_guide/helpers/captcha_helper.html
+++ b/user_guide/helpers/captcha_helper.html
@@ -83,7 +83,7 @@
 <code>&lt;img src=&quot;http://example.com/captcha/12345.jpg&quot; width=&quot;140&quot; height=&quot;50&quot; /&gt;</code></p>
 
 	<p>The "time" is the micro timestamp used as the image name without the file
-	extension.  It will be a number like this:  1139612155.3422</p>
+	extension. It will be a number like this: 1139612155.3422</p>
 
 	<p>The "word" is the word that appears in the captcha image, which if not
 	supplied to the function, will be a random string.</p>
@@ -109,13 +109,13 @@
 		<li>The captcha function requires the GD image library.</li>
 		<li>Only the img_path and img_url are required.</li>
 		<li>If a "word" is not supplied, the function will generate a random
-		ASCII string.  You might put together your own word library that
+		ASCII string. You might put together your own word library that
 		you can draw randomly from.</li>
 		<li>If you do not specify a path to a TRUE TYPE font, the native ugly GD
 		font will be used.</li>
 		<li>The "captcha" folder must be writable (666, or 777)</li>
 		<li>The "expiration" (in seconds) signifies how long an image will
-		remain in the captcha folder before it will be deleted.  The default
+		remain in the captcha folder before it will be deleted. The default
 		is two hours.</li>
 	</ul>
 
@@ -137,7 +137,7 @@
 &nbsp;KEY `word` (`word`)<br />
 );</code>
 
-	<p>Here is an example of usage with a database.  On the page where the CAPTCHA will be shown you'll have something like this:</p>
+	<p>Here is an example of usage with a database. On the page where the CAPTCHA will be shown you'll have something like this:</p>
 
 <code>$this-&gt;load-&gt;helper(&#x27;captcha&#x27;);<br />
 $vals = array(<br />
diff --git a/user_guide/helpers/cookie_helper.html b/user_guide/helpers/cookie_helper.html
index 34faadb..9879653 100644
--- a/user_guide/helpers/cookie_helper.html
+++ b/user_guide/helpers/cookie_helper.html
@@ -70,20 +70,20 @@
 
 <h2>set_cookie()</h2>
 
-<p>This helper function gives you view file friendly syntax to set browser cookies.  Refer to the <a href="../libraries/input.html">Input class</a> for a description of use, as this function is an alias to $this->input->set_cookie().</p>
+<p>This helper function gives you view file friendly syntax to set browser cookies. Refer to the <a href="../libraries/input.html">Input class</a> for a description of use, as this function is an alias to $this->input->set_cookie().</p>
 
 <h2>get_cookie()</h2>
 
-<p>This helper function gives you view file friendly syntax to get browser cookies.  Refer to the <a href="../libraries/input.html">Input class</a> for a description of use, as this function is an alias to $this->input->cookie().</p>
+<p>This helper function gives you view file friendly syntax to get browser cookies. Refer to the <a href="../libraries/input.html">Input class</a> for a description of use, as this function is an alias to $this->input->cookie().</p>
 
 
 <h2>delete_cookie()</h2>
 
-<p>Lets you delete a cookie.  Unless you've set a custom path or other values, only the name of the cookie is needed:</p>
+<p>Lets you delete a cookie. Unless you've set a custom path or other values, only the name of the cookie is needed:</p>
 
 <code>delete_cookie("name");</code>
 
-<p>This function is otherwise identical to <dfn>set_cookie()</dfn>, except that it does not have the value and expiration parameters.  You can submit an array
+<p>This function is otherwise identical to <dfn>set_cookie()</dfn>, except that it does not have the value and expiration parameters. You can submit an array
 of values in the first parameter or you can set discrete parameters.</p>
 
 <code>delete_cookie($name, $domain, $path, $prefix)</code>
diff --git a/user_guide/helpers/date_helper.html b/user_guide/helpers/date_helper.html
index 44096ff..a293342 100644
--- a/user_guide/helpers/date_helper.html
+++ b/user_guide/helpers/date_helper.html
@@ -72,7 +72,7 @@
 <h2>now()</h2>
 
 <p>Returns the current time as a Unix timestamp, referenced either to your server's local time or GMT, based on the "time reference"
-setting in your config file.  If you do not intend to set your master time reference to GMT (which you'll typically do if you
+setting in your config file. If you do not intend to set your master time reference to GMT (which you'll typically do if you
 run a site that lets each user set their own timezone settings) there is no benefit to using this function over PHP's time() function.
 </p>
 
@@ -82,10 +82,10 @@
 <h2>mdate()</h2>
 
 <p>This function is identical to PHPs <a href="http://www.php.net/date">date()</a> function, except that it lets you
-use MySQL style date codes, where each code letter is preceded with a percent sign:  %Y %m %d etc.</p>
+use MySQL style date codes, where each code letter is preceded with a percent sign: %Y %m %d etc.</p>
 
 <p>The benefit of doing dates this way is that you don't have to worry about escaping any characters that
-are not date codes, as you would normally have to do with the date() function.  Example:</p>
+are not date codes, as you would normally have to do with the date() function. Example:</p>
 
 <code>$datestring = "Year: %Y Month: %m Day: %d - %h:%i %a";<br />
 $time = time();<br />
@@ -149,7 +149,7 @@
 	<tr>
 		<td>DATE_RFC1123</td>
 		<td>RFC 1123</td>
-		<td>Sun, 14 Aug 2005 16:13:03 UTC</td>	
+		<td>Sun, 14 Aug 2005 16:13:03 UTC</td>
 	</tr>
 	<tr>
 		<td>DATE_RFC2822</td>
@@ -170,7 +170,7 @@
 
 <h2>local_to_gmt()</h2>
 
-<p>Takes a Unix timestamp as input and returns it as GMT.  Example:</p>
+<p>Takes a Unix timestamp as input and returns it as GMT. Example:</p>
 
 <code>$now = time();<br />
 <br />
@@ -180,11 +180,11 @@
 <h2>gmt_to_local()</h2>
 
 <p>Takes a Unix timestamp (referenced to GMT) as input, and converts it to a localized timestamp based on the
-timezone and Daylight Saving time submitted.  Example:</p>
+timezone and Daylight Saving time submitted. Example:</p>
 
 <code>
 $timestamp = '1140153693';<br />
-$timezone  = 'UM8';<br />
+$timezone = 'UM8';<br />
 $daylight_saving = TRUE;<br />
 <br />
 echo gmt_to_local($timestamp, $timezone, $daylight_saving);</code>
@@ -208,7 +208,7 @@
 
 <p>This can be useful if you need to display a date in a form field for submission.</p>
 
-<p>The time can be formatted with or without seconds, and it can be set to European or US format.  If only
+<p>The time can be formatted with or without seconds, and it can be set to European or US format. If only
 the timestamp is submitted it will return the time without seconds formatted for the U.S. Examples:</p>
 
 <code>$now = time();<br />
@@ -222,9 +222,9 @@
 
 <h2>human_to_unix()</h2>
 
-<p>The opposite of the above function.  Takes a "human" time as input and returns it as Unix.  This function is
-useful if you accept "human" formatted dates submitted via a form.  Returns FALSE (boolean) if
-the date string passed to it is not formatted as indicated above.  Example:</p>
+<p>The opposite of the above function. Takes a "human" time as input and returns it as Unix. This function is
+useful if you accept "human" formatted dates submitted via a form. Returns FALSE (boolean) if
+the date string passed to it is not formatted as indicated above. Example:</p>
 
 <code>$now = time();<br />
 <br />
@@ -242,9 +242,9 @@
 
 <code>1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes</code>
 
-<p>The first parameter must contain a Unix timestamp.  The second parameter must contain a
-timestamp that is greater that the first timestamp.  If the second parameter empty, the current time will be used.  The most common purpose
-for this function is to show how much time has elapsed from some point in time in the past to now.  Example:</p>
+<p>The first parameter must contain a Unix timestamp. The second parameter must contain a
+timestamp that is greater that the first timestamp. If the second parameter empty, the current time will be used. The most common purpose
+for this function is to show how much time has elapsed from some point in time in the past to now. Example:</p>
 
 <code>$post_date = '1079621429';<br />
 $now = time();<br />
@@ -256,7 +256,7 @@
 
 <h2>days_in_month()</h2>
 
-<p>Returns the number of days in a given month/year. Takes leap years into account.  Example:</p>
+<p>Returns the number of days in a given month/year. Takes leap years into account. Example:</p>
 <code>echo days_in_month(06, 2005);</code>
 
 <p>If the second parameter is empty, the current year will be used.</p>
@@ -304,7 +304,7 @@
 
 <p>This menu is useful if you run a membership site in which your users are allowed to set their local timezone value.</p>
 
-<p>The first parameter lets you set the "selected" state of the menu.  For example, to set Pacific time as the default you will do this:</p>
+<p>The first parameter lets you set the "selected" state of the menu. For example, to set Pacific time as the default you will do this:</p>
 
 <code>echo timezone_menu('UM8');</code>
 
diff --git a/user_guide/helpers/directory_helper.html b/user_guide/helpers/directory_helper.html
index 1a2f28d..2086fe1 100644
--- a/user_guide/helpers/directory_helper.html
+++ b/user_guide/helpers/directory_helper.html
@@ -78,12 +78,12 @@
 
 <p class="important"><strong>Note:</strong> Paths are almost always relative to your main index.php file.</p>
 
-<p>Sub-folders contained within the directory will be mapped as well.  If you wish to control the recursion depth,
+<p>Sub-folders contained within the directory will be mapped as well. If you wish to control the recursion depth,
 you can do so using the second parameter (integer). A depth of 1 will only map the top level directory:</p>
 
 <code>$map = directory_map('./mydirectory/', 1);</code>
 
-<p>By default, hidden files will not be included in the returned array.  To override this behavior,
+<p>By default, hidden files will not be included in the returned array. To override this behavior,
 you may set a third parameter to <var>true</var> (boolean):</p>
 
 <code>$map = directory_map('./mydirectory/', FALSE, TRUE);</code>
diff --git a/user_guide/helpers/file_helper.html b/user_guide/helpers/file_helper.html
index c372354..2d06fa2 100644
--- a/user_guide/helpers/file_helper.html
+++ b/user_guide/helpers/file_helper.html
@@ -69,11 +69,11 @@
 
 <h2>read_file('<var>path</var>')</h2>
 
-<p>Returns the data contained in the file specified in the path.  Example:</p>
+<p>Returns the data contained in the file specified in the path. Example:</p>
 
 <code>$string = read_file('./path/to/file.php');</code>
 
-<p>The path can be a relative or full server path.  Returns FALSE (boolean) on failure.</p>
+<p>The path can be a relative or full server path. Returns FALSE (boolean) on failure.</p>
 
 <p class="important"><strong>Note:</strong> The path is relative to your main site index.php file, NOT your controller or view files.
 CodeIgniter uses a front controller so paths are always relative to the main site index.</p>
@@ -83,7 +83,7 @@
 
 <h2>write_file('<var>path</var>', <kbd>$data</kbd>)</h2>
 
-<p>Writes data to the file specified in the path.  If the file does not exist the function will create it. Example:</p>
+<p>Writes data to the file specified in the path. If the file does not exist the function will create it. Example:</p>
 
 <code>
 $data = 'Some file data';<br />
@@ -101,7 +101,7 @@
 
 <code>write_file('./path/to/file.php', $data, <var>'r+'</var>);</code>
 
-<p>The default mode is <kbd>wb</kbd>.  Please see the <a href="http://php.net/fopen">PHP user guide</a> for mode options.</p>
+<p>The default mode is <kbd>wb</kbd>. Please see the <a href="http://php.net/fopen">PHP user guide</a> for mode options.</p>
 
 <p>Note: In order for this function to write data to a file its file permissions must be set such that it is writable (666, 777, etc.).
 If the file does not already exist, the directory containing it must be writable.</p>
@@ -111,7 +111,7 @@
 
 <h2>delete_files('<var>path</var>')</h2>
 
-<p>Deletes ALL files contained in the supplied path.  Example:</p>
+<p>Deletes ALL files contained in the supplied path. Example:</p>
 <code>delete_files('./path/to/directory/');</code>
 
 <p>If the second parameter is set to <kbd>true</kbd>, any directories contained within the supplied root path will be deleted as well. Example:</p>
@@ -127,12 +127,12 @@
 
 <h2>get_dir_file_info('<var>path/to/directory/</var>', <kbd>$top_level_only</kbd> = TRUE)</h2>
 
-<p>Reads the specified directory and builds an array containing the filenames, filesize, dates, and permissions.  Sub-folders contained within the specified path are only read if forced
+<p>Reads the specified directory and builds an array containing the filenames, filesize, dates, and permissions. Sub-folders contained within the specified path are only read if forced
 	by sending the second parameter, <kbd>$top_level_only</kbd> to <samp>FALSE</samp>, as this can be an intensive operation.</p>
 
 <h2>get_file_info('<var>path/to/file</var>', <kbd>$file_information</kbd>)</h2>
 
-<p>Given a file and path, returns the name, path, size, date modified. Second parameter allows you to explicitly declare what information you want returned; options are: name, server_path, size, date, readable, writable, executable, fileperms.  Returns FALSE if the file cannot be found.</p>
+<p>Given a file and path, returns the name, path, size, date modified. Second parameter allows you to explicitly declare what information you want returned; options are: name, server_path, size, date, readable, writable, executable, fileperms. Returns FALSE if the file cannot be found.</p>
 
 <p class="important"><strong>Note:</strong> The &quot;writable&quot; uses the PHP function is_writable() which is known to have issues on the IIS webserver. Consider using fileperms instead, which returns information from PHP's fileperms() function.</p>
 <h2>get_mime_by_extension('<var>file</var>')</h2>
@@ -142,7 +142,7 @@
 <code>$file = &quot;somefile.png&quot;;<br />
 echo $file . ' is has a mime type of ' . get_mime_by_extension($file);</code>
 </p>
-<p class="critical"><strong>Note:</strong> This is not an accurate way of determining file mime types, and is here strictly as a convenience. It should not be  used for security.</p>
+<p class="critical"><strong>Note:</strong> This is not an accurate way of determining file mime types, and is here strictly as a convenience. It should not be used for security.</p>
 
 <h2>symbolic_permissions(<kbd>$perms</kbd>)</h2>
 
diff --git a/user_guide/helpers/form_helper.html b/user_guide/helpers/form_helper.html
index 87e3c28..b4a5730 100644
--- a/user_guide/helpers/form_helper.html
+++ b/user_guide/helpers/form_helper.html
@@ -72,7 +72,7 @@
 
 <h2>form_open()</h2>
 
-<p>Creates an opening form tag with a base URL <strong>built from your config preferences</strong>.  It will optionally let you
+<p>Creates an opening form tag with a base URL <strong>built from your config preferences</strong>. It will optionally let you
 add form attributes and hidden input fields, and will always add the attribute <kbd>accept-charset</kbd> based on the charset value in your config file.</p>
 
 <p>The main benefit of using this tag rather than hard coding your own HTML is that it permits your site to be more portable
@@ -122,7 +122,7 @@
 
 <h2>form_hidden()</h2>
 
-<p>Lets you generate hidden input fields.  You can either submit a name/value string to create one field:</p>
+<p>Lets you generate hidden input fields. You can either submit a name/value string to create one field:</p>
 
 <code>form_hidden('username', 'johndoe');<br />
 <br />
@@ -149,7 +149,7 @@
 
 <h2>form_input()</h2>
 
-<p>Lets you generate a standard text input field.  You can minimally pass the field name and value in the first
+<p>Lets you generate a standard text input field. You can minimally pass the field name and value in the first
 and second parameter:</p>
 
 <code>echo form_input('username', 'johndoe');</code>
@@ -196,9 +196,9 @@
 
 <h2>form_dropdown()</h2>
 
-<p>Lets you create a standard drop-down field.  The first parameter will contain the name of the field,
+<p>Lets you create a standard drop-down field. The first parameter will contain the name of the field,
 the second parameter will contain an associative array of options, and the third parameter will contain the
-value you wish to be selected.  You can also pass an array of multiple items through the third parameter, and CodeIgniter will create a multiple select for you. Example:</p>
+value you wish to be selected. You can also pass an array of multiple items through the third parameter, and CodeIgniter will create a multiple select for you. Example:</p>
 
 <code>$options = array(<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'small'&nbsp;&nbsp;=> 'Small Shirt',<br />
@@ -215,7 +215,7 @@
 <br />
 &lt;select name=&quot;shirts&quot;&gt;<br />
 &lt;option value=&quot;small&quot;&gt;Small Shirt&lt;/option&gt;<br />
-&lt;option value=&quot;med&quot;&gt;Medium  Shirt&lt;/option&gt;<br />
+&lt;option value=&quot;med&quot;&gt;Medium Shirt&lt;/option&gt;<br />
 &lt;option value=&quot;large&quot; selected=&quot;selected&quot;&gt;Large Shirt&lt;/option&gt;<br />
 &lt;option value=&quot;xlarge&quot;&gt;Extra Large Shirt&lt;/option&gt;<br />
 &lt;/select&gt;<br />
@@ -226,7 +226,7 @@
 <br />
 &lt;select name=&quot;shirts&quot; multiple=&quot;multiple&quot;&gt;<br />
 &lt;option value=&quot;small&quot; selected=&quot;selected&quot;&gt;Small Shirt&lt;/option&gt;<br />
-&lt;option value=&quot;med&quot;&gt;Medium  Shirt&lt;/option&gt;<br />
+&lt;option value=&quot;med&quot;&gt;Medium Shirt&lt;/option&gt;<br />
 &lt;option value=&quot;large&quot; selected=&quot;selected&quot;&gt;Large Shirt&lt;/option&gt;<br />
 &lt;option value=&quot;xlarge&quot;&gt;Extra Large Shirt&lt;/option&gt;<br />
 &lt;/select&gt;</code>
@@ -243,9 +243,9 @@
 
 <h2>form_multiselect()</h2>
 
-<p>Lets you create a standard multiselect field.  The first parameter will contain the name of the field,
+<p>Lets you create a standard multiselect field. The first parameter will contain the name of the field,
 the second parameter will contain an associative array of options, and the third parameter will contain the
-value or values you wish to be selected.  The parameter usage is identical to using <kbd>form_dropdown()</kbd> above,
+value or values you wish to be selected. The parameter usage is identical to using <kbd>form_dropdown()</kbd> above,
 except of course that the name of the field will need to use POST array syntax, e.g. <samp>foo[]</samp>.</p>
 
 
@@ -267,7 +267,7 @@
 &lt;/fieldset&gt;</code>
 <p>Similar to other functions, you can submit an associative array in the second parameter if you prefer to set additional attributes. </p>
 <p><code>$attributes = array('id' =&gt; 'address_info', 'class' =&gt; 'address_info');<br />
-    echo form_fieldset('Address Information', $attributes);<br />
+  echo form_fieldset('Address Information', $attributes);<br />
 echo &quot;&lt;p&gt;fieldset content here&lt;/p&gt;\n&quot;;<br />
 echo form_fieldset_close(); <br />
 <br />
@@ -277,8 +277,8 @@
 &lt;p&gt;form content here&lt;/p&gt; <br />
 &lt;/fieldset&gt;</code></p>
 <h2>form_fieldset_close()</h2>
-<p>Produces a closing &lt;/fieldset&gt; tag.  The only advantage to using this function is it permits you to pass data to it
-    which will be added below the tag.  For example:</p>
+<p>Produces a closing &lt;/fieldset&gt; tag. The only advantage to using this function is it permits you to pass data to it
+  which will be added below the tag. For example:</p>
 <code>$string = &quot;&lt;/div&gt;&lt;/div&gt;&quot;;<br />
 <br />
 echo form_fieldset_close($string);<br />
@@ -309,7 +309,7 @@
 // Would produce:<br /><br />
 &lt;input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" /></code>
 
-<p>As with other functions, if you would like the tag to contain  additional data, like JavaScript, you can pass it as a string in the
+<p>As with other functions, if you would like the tag to contain additional data, like JavaScript, you can pass it as a string in the
 fourth parameter:</p>
 
 <code>$js = 'onClick="some_function()"';<br />
@@ -330,7 +330,7 @@
 <br />
 &lt;input type=&quot;submit&quot; name=&quot;mysubmit&quot; value=&quot;Submit Post!&quot; /&gt;</code>
 <p>Similar to other functions, you can submit an associative array in the first parameter if you prefer to set your own attributes.
-    The third parameter lets you add extra data to your form, like JavaScript.</p>
+  The third parameter lets you add extra data to your form, like JavaScript.</p>
 <h2>form_label()</h2>
 <p>Lets you generate a &lt;label&gt;. Simple example:</p>
 <code>echo form_label('What is your Name', 'username');<br />
@@ -338,13 +338,13 @@
 // Would produce:
 <br />
 &lt;label for=&quot;username&quot;&gt;What is your Name&lt;/label&gt;</code>
-<p>Similar to other functions, you can submit an associative array in the third parameter if you prefer to set additional attributes.    </p>
+<p>Similar to other functions, you can submit an associative array in the third parameter if you prefer to set additional attributes.  </p>
 <p><code>$attributes = array(<br />
 &nbsp;&nbsp;&nbsp;&nbsp;'class' =&gt; 'mycustomclass',<br />
 &nbsp;&nbsp;&nbsp;&nbsp;'style' =&gt; 'color: #000;',<br />
 );<br />
-    echo form_label('What is your Name', 'username', $attributes);<br />
-        <br />
+  echo form_label('What is your Name', 'username', $attributes);<br />
+    <br />
 // Would produce: <br />
 &lt;label for=&quot;username&quot; class=&quot;mycustomclass&quot; style=&quot;color: #000;&quot;&gt;What is your Name&lt;/label&gt;</code></p>
 <h2>form_reset()</h2>
@@ -386,8 +386,8 @@
 
 <h2>form_close()</h2>
 
-<p>Produces a closing &lt;/form> tag.  The only advantage to using this function is it permits you to pass data to it
-which will be added below the tag.  For example:</p>
+<p>Produces a closing &lt;/form> tag. The only advantage to using this function is it permits you to pass data to it
+which will be added below the tag. For example:</p>
 
 <code>$string = "&lt;/div>&lt;/div>";<br />
 <br />
@@ -404,7 +404,7 @@
 
 <h2>form_prep()</h2>
 
-<p>Allows you to safely use HTML and characters such as quotes within form elements without breaking out of the form.  Consider this example:</p>
+<p>Allows you to safely use HTML and characters such as quotes within form elements without breaking out of the form. Consider this example:</p>
 
 <code>$string = 'Here is a string containing <strong>"quoted"</strong> text.';<br />
 <br />
@@ -431,7 +431,7 @@
 
 <h2>set_select()</h2>
 
-<p>If you use a <dfn>&lt;select></dfn> menu, this function permits you to display the menu item that was selected.  The first parameter
+<p>If you use a <dfn>&lt;select></dfn> menu, this function permits you to display the menu item that was selected. The first parameter
 must contain the name of the select menu, the second parameter must contain the value of
 each item, and the third (optional) parameter lets you set an item as the default (use boolean TRUE/FALSE).</p>
 
@@ -439,16 +439,16 @@
 
 <code>
 &lt;select name="myselect"><br />
-&lt;option value="one" <dfn>&lt;?php echo  set_select('myselect', 'one', TRUE); ?></dfn> >One&lt;/option><br />
-&lt;option value="two" <dfn>&lt;?php echo  set_select('myselect', 'two'); ?></dfn> >Two&lt;/option><br />
-&lt;option value="three" <dfn>&lt;?php echo  set_select('myselect', 'three'); ?></dfn> >Three&lt;/option><br />
+&lt;option value="one" <dfn>&lt;?php echo set_select('myselect', 'one', TRUE); ?></dfn> >One&lt;/option><br />
+&lt;option value="two" <dfn>&lt;?php echo set_select('myselect', 'two'); ?></dfn> >Two&lt;/option><br />
+&lt;option value="three" <dfn>&lt;?php echo set_select('myselect', 'three'); ?></dfn> >Three&lt;/option><br />
 &lt;/select>
 </code>
 
 
 <h2>set_checkbox()</h2>
 
-<p>Permits you to display a checkbox in the state it was submitted.  The first parameter
+<p>Permits you to display a checkbox in the state it was submitted. The first parameter
 must contain the name of the checkbox, the second parameter must contain its value, and the third (optional) parameter lets you set an item as the default (use boolean TRUE/FALSE). Example:</p>
 
 <code>&lt;input type="checkbox" name="mycheck" value="1" <dfn>&lt;?php echo set_checkbox('mycheck', '1'); ?></dfn> /><br />
@@ -459,8 +459,8 @@
 
 <p>Permits you to display radio buttons in the state they were submitted. This function is identical to the <strong>set_checkbox()</strong> function above.</p>
 
-<code>&lt;input type="radio" name="myradio" value="1" <dfn>&lt;?php echo  set_radio('myradio', '1', TRUE); ?></dfn> /><br />
-&lt;input type="radio" name="myradio" value="2" <dfn>&lt;?php echo  set_radio('myradio', '2'); ?></dfn> /></code>
+<code>&lt;input type="radio" name="myradio" value="1" <dfn>&lt;?php echo set_radio('myradio', '1', TRUE); ?></dfn> /><br />
+&lt;input type="radio" name="myradio" value="2" <dfn>&lt;?php echo set_radio('myradio', '2'); ?></dfn> /></code>
 
 
 
diff --git a/user_guide/helpers/html_helper.html b/user_guide/helpers/html_helper.html
index 308013d..665081f 100644
--- a/user_guide/helpers/html_helper.html
+++ b/user_guide/helpers/html_helper.html
@@ -84,10 +84,10 @@
 <p>The above would produce: &lt;br />&lt;br />&lt;br /></p>
 
 <h2><a name="heading"></a>heading()</h2>
-<p>Lets you create HTML &lt;h1> tags.  The first parameter will contain the data, the
-second the size of the heading.  Example:</p>
+<p>Lets you create HTML &lt;h1> tags. The first parameter will contain the data, the
+second the size of the heading. Example:</p>
 <code>echo heading('Welcome!', 3);</code>
-<p>The above would produce:  &lt;h3>Welcome!&lt;/h3></p>
+<p>The above would produce: &lt;h3>Welcome!&lt;/h3></p>
 
 <p>Additionally, in order to add attributes to the heading tag such as HTML classes, ids or inline styles, a third parameter is available.</p>
 <code>echo heading('Welcome!', 3, 'class="pink"')</code>
@@ -95,7 +95,7 @@
 
 
 <h2><a name="img"></a>img()</h2>
-<p>Lets you create HTML &lt;img /&gt; tags.  The first parameter  contains the image source. Example:</p>
+<p>Lets you create HTML &lt;img /&gt; tags. The first parameter contains the image source. Example:</p>
 <code>echo img('images/picture.jpg');<br />
 // gives &lt;img src=&quot;http://site.com/images/picture.jpg&quot; /&gt;</code>
 <p>There is an optional second parameter that is a TRUE/FALSE value that specifics if the src should have the page specified by $config['index_page'] added to the address it creates. Presumably, this would be if you were using a media controller.</p>
@@ -116,7 +116,7 @@
 	// &lt;img src=&quot;http://site.com/index.php/images/picture.jpg&quot; alt=&quot;Me, demonstrating how to eat 4 slices of pizza at one time&quot; class=&quot;post_images&quot; width=&quot;200&quot; height=&quot;200&quot; title=&quot;That was quite a night&quot; rel=&quot;lightbox&quot; /&gt;</code></p>
 
 <h2><a name="link_tag"></a>link_tag()</h2>
-<p>Lets you create HTML &lt;link /> tags.  This is useful for stylesheet links, as well as other links. The parameters are href, with optional rel, type, title, media and index_page. index_page is a TRUE/FALSE value that specifics if the href should have the page specified by $config['index_page'] added to the address it creates.<code>
+<p>Lets you create HTML &lt;link /> tags. This is useful for stylesheet links, as well as other links. The parameters are href, with optional rel, type, title, media and index_page. index_page is a TRUE/FALSE value that specifics if the href should have the page specified by $config['index_page'] added to the address it creates.<code>
 echo link_tag('css/mystyles.css');<br />
 // gives &lt;link href=&quot;http://site.com/css/mystyles.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;</code></p>
 <p>Further examples:</p>
@@ -271,20 +271,20 @@
 
 <h2><a name="meta"></a>meta()</h2>
 
-<p>Helps you generate meta tags.  You can pass strings to the function, or simple arrays, or multidimensional ones. Examples:</p>
+<p>Helps you generate meta tags. You can pass strings to the function, or simple arrays, or multidimensional ones. Examples:</p>
 
 <code>
 echo meta('description', 'My Great site');<br />
-// Generates:  &lt;meta name="description" content="My Great Site" /><br />
+// Generates: &lt;meta name="description" content="My Great Site" /><br />
 <br /><br />
 
-echo meta('Content-type', 'text/html; charset=utf-8', 'equiv'); // Note the third parameter.  Can be "equiv" or "name"<br />
-// Generates:  &lt;meta http-equiv="Content-type" content="text/html; charset=utf-8" /><br />
+echo meta('Content-type', 'text/html; charset=utf-8', 'equiv'); // Note the third parameter. Can be "equiv" or "name"<br />
+// Generates: &lt;meta http-equiv="Content-type" content="text/html; charset=utf-8" /><br />
 
 <br /><br />
 
 echo meta(array('name' => 'robots', 'content' => 'no-cache'));<br />
-// Generates:  &lt;meta name="robots" content="no-cache" /><br />
+// Generates: &lt;meta name="robots" content="no-cache" /><br />
 
 <br /><br />
 
@@ -298,7 +298,7 @@
 <br />
 echo meta($meta);
 <br />
-// Generates:  <br />
+// Generates: <br />
 // &lt;meta name="robots" content="no-cache" /><br />
 // &lt;meta name="description" content="My Great Site" /><br />
 // &lt;meta name="keywords" content="love, passion, intrigue, deception" /><br />
@@ -319,7 +319,7 @@
 // &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
 </code>
 
-<p>The following is a list of doctype choices.  These are configurable, and pulled from <samp>application/config/doctypes.php</samp></p>
+<p>The following is a list of doctype choices. These are configurable, and pulled from <samp>application/config/doctypes.php</samp></p>
 
 <table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
 	<tr>
diff --git a/user_guide/helpers/inflector_helper.html b/user_guide/helpers/inflector_helper.html
index 221c059..0876754 100644
--- a/user_guide/helpers/inflector_helper.html
+++ b/user_guide/helpers/inflector_helper.html
@@ -71,7 +71,7 @@
 
 <h2>singular()</h2>
 
-<p>Changes a plural word to singular.  Example:</p>
+<p>Changes a plural word to singular. Example:</p>
 
 <code>
 $word = "dogs";<br />
@@ -81,7 +81,7 @@
 
 <h2>plural()</h2>
 
-<p>Changes a singular word to plural.  Example:</p>
+<p>Changes a singular word to plural. Example:</p>
 
 <code>
 $word = "dog";<br />
@@ -94,7 +94,7 @@
 echo plural($word, TRUE); // Returns &quot;passes&quot; </code>
 
 <h2>camelize()</h2>
-<p>Changes a string of words separated by spaces or underscores to camel case.  Example:</p>
+<p>Changes a string of words separated by spaces or underscores to camel case. Example:</p>
 
 <code>
 $word = "my_dog_spot";<br />
@@ -104,7 +104,7 @@
 
 <h2>underscore()</h2>
 
-<p>Takes multiple words separated by spaces and underscores them.  Example:</p>
+<p>Takes multiple words separated by spaces and underscores them. Example:</p>
 
 <code>
 $word = "my dog spot";<br />
@@ -114,7 +114,7 @@
 
 <h2>humanize()</h2>
 
-<p>Takes multiple words separated by underscores and adds spaces between them.  Each word is capitalized. Example:</p>
+<p>Takes multiple words separated by underscores and adds spaces between them. Each word is capitalized. Example:</p>
 
 <code>
 $word = "my_dog_spot";<br />
diff --git a/user_guide/helpers/language_helper.html b/user_guide/helpers/language_helper.html
index 3b3b87d..e10733b 100644
--- a/user_guide/helpers/language_helper.html
+++ b/user_guide/helpers/language_helper.html
@@ -73,7 +73,7 @@
 
 <p>This function returns a line of text from a loaded language file with simplified syntax
 	that may be more desirable for view files than calling <kbd>$this-&gt;lang-&gt;line()</kbd>.
-	The optional second parameter will also output a form label for you.  Example:</p>
+	The optional second parameter will also output a form label for you. Example:</p>
 
 <code>echo lang('<samp>language_key</samp>', '<samp>form_item_id</samp>');<br />
 // becomes &lt;label for="form_item_id"&gt;language_key&lt;/label&gt;</code>
diff --git a/user_guide/helpers/number_helper.html b/user_guide/helpers/number_helper.html
index 51a4521..a04f37c 100644
--- a/user_guide/helpers/number_helper.html
+++ b/user_guide/helpers/number_helper.html
@@ -71,7 +71,7 @@
 
 <h2>byte_format()</h2>
 
-<p>Formats a numbers as bytes, based on size, and adds the appropriate suffix.  Examples:</p>
+<p>Formats a numbers as bytes, based on size, and adds the appropriate suffix. Examples:</p>
 
 <code>
 echo byte_format(456); // Returns 456 Bytes<br />
diff --git a/user_guide/helpers/security_helper.html b/user_guide/helpers/security_helper.html
index e0cace3..49e0365 100644
--- a/user_guide/helpers/security_helper.html
+++ b/user_guide/helpers/security_helper.html
@@ -71,19 +71,19 @@
 
 <h2>xss_clean()</h2>
 
-<p>Provides Cross Site Script Hack filtering.  This function is an alias to the one in the
-<a href="../libraries/input.html">Input class</a>.  More info can be found there.</p>
+<p>Provides Cross Site Script Hack filtering. This function is an alias to the one in the
+<a href="../libraries/input.html">Input class</a>. More info can be found there.</p>
 
 
 <h2>sanitize_filename()</h2>
 
-<p>Provides protection against directory traversal.  This function is an alias to the one in the
-<a href="../libraries/security.html">Security class</a>.  More info can be found there.</p>
+<p>Provides protection against directory traversal. This function is an alias to the one in the
+<a href="../libraries/security.html">Security class</a>. More info can be found there.</p>
 
 
 <h2>do_hash()</h2>
 
-<p>Permits you to create SHA1 or MD5 one way hashes suitable for encrypting passwords.  Will create SHA1 by default. Examples:</p>
+<p>Permits you to create SHA1 or MD5 one way hashes suitable for encrypting passwords. Will create SHA1 by default. Examples:</p>
 
 <code>
 $str = do_hash($str); // SHA1<br />
@@ -91,13 +91,13 @@
 $str = do_hash($str, 'md5'); // MD5
 </code>
 
-<p class="important"><strong>Note:</strong>  This function was formerly named <kbd>dohash()</kbd>, which has been deprecated in favour of <kbd>do_hash()</kbd>.</p>
+<p class="important"><strong>Note:</strong> This function was formerly named <kbd>dohash()</kbd>, which has been deprecated in favour of <kbd>do_hash()</kbd>.</p>
 
 
 
 <h2>strip_image_tags()</h2>
 
-<p>This is a security function that will strip image tags from a string.  It leaves the image URL as plain text.</p>
+<p>This is a security function that will strip image tags from a string. It leaves the image URL as plain text.</p>
 
 <code>$string = strip_image_tags($string);</code>
 
diff --git a/user_guide/helpers/smiley_helper.html b/user_guide/helpers/smiley_helper.html
index 408df17..4668f10 100644
--- a/user_guide/helpers/smiley_helper.html
+++ b/user_guide/helpers/smiley_helper.html
@@ -83,7 +83,7 @@
 requires that you first download and install the smiley images, then create a controller and the View as described.</p>
 
 <p class="important"><strong>Important:</strong> Before you begin, please <a href="http://codeigniter.com/download_files/smileys.zip">download the smiley images</a> and put them in
-a publicly accessible place on your server.  This helper also assumes you have the smiley replacement array located at
+a publicly accessible place on your server. This helper also assumes you have the smiley replacement array located at
 <dfn>application/config/smileys.php</dfn></p>
 
 
@@ -166,7 +166,7 @@
 
 <h2>get_clickable_smileys()</h2>
 
-<p>Returns an array containing your smiley images wrapped in a clickable link.  You must supply the URL to your smiley folder
+<p>Returns an array containing your smiley images wrapped in a clickable link. You must supply the URL to your smiley folder
 and a field id or field alias.</p>
 
 <code>$image_array = get_smiley_links("http://example.com/images/smileys/", "comment");</code>
@@ -187,10 +187,10 @@
 <h2>parse_smileys()</h2>
 
 <p>Takes a string of text as input and replaces any contained plain text smileys into the image
-equivalent.  The first parameter must contain your string, the second must contain  the URL to your smiley folder:</p>
+equivalent. The first parameter must contain your string, the second must contain the URL to your smiley folder:</p>
 
 <code>
-$str = 'Here are some simileys: :-)  ;-)';
+$str = 'Here are some simileys: :-) ;-)';
 
 $str = parse_smileys($str, "http://example.com/images/smileys/");
 
diff --git a/user_guide/helpers/string_helper.html b/user_guide/helpers/string_helper.html
index 169ee4e..6fc2cf5 100644
--- a/user_guide/helpers/string_helper.html
+++ b/user_guide/helpers/string_helper.html
@@ -70,9 +70,9 @@
 
 <h2>random_string()</h2>
 
-<p>Generates a random string based on the type and length you specify.  Useful for creating passwords or generating random hashes.</p>
+<p>Generates a random string based on the type and length you specify. Useful for creating passwords or generating random hashes.</p>
 
-<p>The first parameter specifies the type of string, the second parameter specifies the length.  The following choices are available:</p>
+<p>The first parameter specifies the type of string, the second parameter specifies the length. The following choices are available:</p>
 
  alpha, alunum, numeric, nozero, unique, md5, encrypt and sha1
 <ul>
@@ -92,7 +92,7 @@
 
 <h2>alternator()</h2>
 
-<p>Allows two or more items to be alternated between, when cycling through a loop.  Example:</p>
+<p>Allows two or more items to be alternated between, when cycling through a loop. Example:</p>
 
 <code>for ($i = 0; $i < 10; $i++)<br />
 {<br />
diff --git a/user_guide/helpers/text_helper.html b/user_guide/helpers/text_helper.html
index f71d878..3c83f3d 100644
--- a/user_guide/helpers/text_helper.html
+++ b/user_guide/helpers/text_helper.html
@@ -71,22 +71,22 @@
 
 <h2>word_limiter()</h2>
 
-<p>Truncates a string to the number of <strong>words</strong> specified.  Example:</p>
+<p>Truncates a string to the number of <strong>words</strong> specified. Example:</p>
 
 <code>
 $string = "Here is a nice text string consisting of eleven words.";<br />
 <br />
 $string = word_limiter($string, 4);<br /><br />
 
-// Returns:  Here is a nice&#8230;
+// Returns: Here is a nice&#8230;
 </code>
 
-<p>The third parameter is an optional suffix added to the string.  By default it adds an ellipsis.</p>
+<p>The third parameter is an optional suffix added to the string. By default it adds an ellipsis.</p>
 
 
 <h2>character_limiter()</h2>
 
-<p>Truncates a string to the number of <strong>characters</strong> specified.  It maintains the integrity
+<p>Truncates a string to the number of <strong>characters</strong> specified. It maintains the integrity
 of words so the character count may be slightly more or less then what you specify. Example:</p>
 
 <code>
@@ -94,7 +94,7 @@
 <br />
 $string = character_limiter($string, 20);<br /><br />
 
-// Returns:  Here is a nice text string&#8230;
+// Returns: Here is a nice text string&#8230;
 </code>
 
 <p>The third parameter is an optional suffix added to the string, if undeclared this helper uses an ellipsis.</p>
@@ -125,9 +125,9 @@
 
 <h2>word_censor()</h2>
 
-<p>Enables you to censor words within a text string.  The first parameter will contain the original string.  The
-second will contain an array of words which you disallow.  The third (optional) parameter can contain a replacement value
-for the words.  If not specified they are replaced with pound signs: ####.  Example:</p>
+<p>Enables you to censor words within a text string. The first parameter will contain the original string. The
+second will contain an array of words which you disallow. The third (optional) parameter can contain a replacement value
+for the words. If not specified they are replaced with pound signs: ####. Example:</p>
 
 <code>
 $disallowed = array('darn', 'shucks', 'golly', 'phooey');<br />
@@ -137,7 +137,7 @@
 
 <h2>highlight_code()</h2>
 
-<p>Colorizes a string of code (PHP, HTML, etc.).  Example:</p>
+<p>Colorizes a string of code (PHP, HTML, etc.). Example:</p>
 
 <code>$string = highlight_code($string);</code>
 
@@ -146,9 +146,9 @@
 
 <h2>highlight_phrase()</h2>
 
-<p>Will highlight a phrase within a text string.  The first parameter will contain the original string, the second will
-contain the phrase you wish to highlight.  The third and fourth parameters will contain the opening/closing HTML tags
-you would like the phrase wrapped in.  Example:</p>
+<p>Will highlight a phrase within a text string. The first parameter will contain the original string, the second will
+contain the phrase you wish to highlight. The third and fourth parameters will contain the opening/closing HTML tags
+you would like the phrase wrapped in. Example:</p>
 
 <code>
 $string = "Here is a nice text string about nothing in particular.";<br />
@@ -164,7 +164,7 @@
 
 <h2>word_wrap()</h2>
 
-<p>Wraps text at the specified <strong>character</strong> count while maintaining complete words.  Example:</p>
+<p>Wraps text at the specified <strong>character</strong> count while maintaining complete words. Example:</p>
 
 <code>$string = "Here is a simple string of text that will help us demonstrate this function.";<br />
 <br />
@@ -180,8 +180,8 @@
 <h2>ellipsize()</h2>
 
 <p>This function will strip tags from a string, split it at a defined maximum length, and insert an ellipsis.</p>
-<p>The first parameter is the string to ellipsize, the second is the number of characters in the final string. The third parameter is where in the string the ellipsis should appear from 0 - 1, left to right.  For example.  a value of 1 will place the ellipsis at the right of the string, .5 in the middle, and 0 at the left.</p>
-<p>An optional forth parameter is the kind of ellipsis.  By default, <samp>&amp;hellip;</samp> will be inserted.</p>
+<p>The first parameter is the string to ellipsize, the second is the number of characters in the final string. The third parameter is where in the string the ellipsis should appear from 0 - 1, left to right. For example. a value of 1 will place the ellipsis at the right of the string, .5 in the middle, and 0 at the left.</p>
+<p>An optional forth parameter is the kind of ellipsis. By default, <samp>&amp;hellip;</samp> will be inserted.</p>
 
 <code>$str = 'this_string_is_entirely_too_long_and_might_break_my_design.jpg';<br />
 <br />
diff --git a/user_guide/helpers/typography_helper.html b/user_guide/helpers/typography_helper.html
index 00686a3..e75528f 100644
--- a/user_guide/helpers/typography_helper.html
+++ b/user_guide/helpers/typography_helper.html
@@ -71,7 +71,7 @@
 
 <h2>auto_typography()</h2>
 
-<p>Formats text so that it is semantically and typographically correct HTML.  Please see the <a href="../libraries/typography.html">Typography Class</a> for more info.</p>
+<p>Formats text so that it is semantically and typographically correct HTML. Please see the <a href="../libraries/typography.html">Typography Class</a> for more info.</p>
 
 <p>Usage example:</p>
 
diff --git a/user_guide/helpers/url_helper.html b/user_guide/helpers/url_helper.html
index d20f1b1..0bcf1e7 100644
--- a/user_guide/helpers/url_helper.html
+++ b/user_guide/helpers/url_helper.html
@@ -69,13 +69,13 @@
 
 <h2>site_url()</h2>
 
-<p>Returns your site URL, as specified in your config file.  The index.php file (or whatever you have set as your
+<p>Returns your site URL, as specified in your config file. The index.php file (or whatever you have set as your
 site <dfn>index_page</dfn> in your config file) will be added to the URL, as will any URI segments you pass to the function.</p>
 
 <p>You are encouraged to use this function any time you need to generate a local URL so that your pages become more portable
 in the event your URL changes.</p>
 
-<p>Segments can be optionally passed to the function as a string or an array.  Here is a string example:</p>
+<p>Segments can be optionally passed to the function as a string or an array. Here is a string example:</p>
 
 <code>echo site_url("news/local/123");</code>
 
@@ -90,7 +90,7 @@
 
 
 <h2>base_url()</h2>
-<p>Returns your site base URL, as specified in your config file.  Example:</p>
+<p>Returns your site base URL, as specified in your config file. Example:</p>
 <code>echo base_url();</code>
 
 
@@ -99,7 +99,7 @@
 
 
 <h2>uri_string()</h2>
-<p>Returns the URI segments of any page that contains this function.  For example, if your URL was this:</p>
+<p>Returns the URI segments of any page that contains this function. For example, if your URL was this:</p>
 <code>http://some-site.com/blog/comments/123</code>
 
 <p>The function would return:</p>
@@ -107,7 +107,7 @@
 
 
 <h2>index_page()</h2>
-<p>Returns your site "index" page, as specified in your config file.  Example:</p>
+<p>Returns your site "index" page, as specified in your config file. Example:</p>
 <code>echo index_page();</code>
 
 
@@ -122,15 +122,15 @@
 
 <code>anchor(<var>uri segments</var>, <var>text</var>, <var>attributes</var>)</code>
 
-<p>The first parameter can contain any segments you wish appended to the URL.  As with the <dfn>site_url()</dfn> function above,
+<p>The first parameter can contain any segments you wish appended to the URL. As with the <dfn>site_url()</dfn> function above,
 segments can be a string or an array.</p>
 
-<p><strong>Note:</strong>&nbsp; If you are building links that are internal to your application do not include the base URL (http://...).  This
+<p><strong>Note:</strong>&nbsp; If you are building links that are internal to your application do not include the base URL (http://...). This
 will be added automatically from the information specified in your config file. Include only the URI segments you wish appended to the URL.</p>
 
-<p>The second segment is the text you would like the link to say.  If you leave it blank, the URL will be used.</p>
+<p>The second segment is the text you would like the link to say. If you leave it blank, the URL will be used.</p>
 
-<p>The third parameter can contain a list of attributes you would like added to the link.  The attributes can be a simple string or an associative array.</p>
+<p>The third parameter can contain a list of attributes you would like added to the link. The attributes can be a simple string or an associative array.</p>
 
 <p>Here are some examples:</p>
 
@@ -148,7 +148,7 @@
 <p>Nearly identical to the <dfn>anchor()</dfn> function except that it opens the URL in a new window.
 
 You can specify JavaScript window attributes in the third parameter to control how the window is opened. If
-the third parameter is not set it will simply open a new window with your own browser settings.  Here is an example
+the third parameter is not set it will simply open a new window with your own browser settings. Here is an example
 with attributes:</p>
 
 <code>
@@ -173,7 +173,7 @@
 
 <h2>mailto()</h2>
 
-<p>Creates a standard HTML email link.  Usage example:</p>
+<p>Creates a standard HTML email link. Usage example:</p>
 
 <code>echo mailto('me@my-site.com', 'Click Here to Contact Me');</code>
 
@@ -188,12 +188,12 @@
 
 <h2>auto_link()</h2>
 
-<p>Automatically turns URLs and email addresses contained in a string into links.  Example:</p>
+<p>Automatically turns URLs and email addresses contained in a string into links. Example:</p>
 
 <code>$string = auto_link($string);</code>
 
-<p>The second parameter determines whether URLs and emails are converted or just one or the other.  Default behavior is both
-if the parameter is not specified.  Email links are encoded as safe_mailto() as shown above.</p>
+<p>The second parameter determines whether URLs and emails are converted or just one or the other. Default behavior is both
+if the parameter is not specified. Email links are encoded as safe_mailto() as shown above.</p>
 
 <p>Converts only URLs:</p>
 <code>$string = auto_link($string, 'url');</code>
@@ -201,42 +201,42 @@
 <p>Converts only Email addresses:</p>
 <code>$string = auto_link($string, 'email');</code>
 
-<p>The third parameter determines whether links are shown in a new window.  The value can be TRUE or FALSE (boolean):</p>
+<p>The third parameter determines whether links are shown in a new window. The value can be TRUE or FALSE (boolean):</p>
 <code>$string = auto_link($string, 'both', TRUE);</code>
 
 
 <h2>url_title()</h2>
 <p>Takes a string as input and creates a human-friendly URL string. This is useful if, for example, you have a blog
-in which you'd like to use the title of your entries in the URL.  Example:</p>
+in which you'd like to use the title of your entries in the URL. Example:</p>
 
 <code>$title = "What's wrong with CSS?";<br />
 <br />
 $url_title = url_title($title);<br />
 <br />
-// Produces:  Whats-wrong-with-CSS
+// Produces: Whats-wrong-with-CSS
 </code>
 
 
-<p>The second parameter determines the word delimiter.  By default dashes are used.  Options are:  <dfn>dash</dfn>, or <dfn>underscore</dfn>:</p>
+<p>The second parameter determines the word delimiter. By default dashes are used. Options are: <dfn>dash</dfn>, or <dfn>underscore</dfn>:</p>
 
 <code>$title = "What's wrong with CSS?";<br />
 <br />
 $url_title = url_title($title, 'underscore');<br />
 <br />
-// Produces:  Whats_wrong_with_CSS
+// Produces: Whats_wrong_with_CSS
 </code>
 
-<p>The third parameter determines whether or not lowercase characters are forced.  By default they are not.  Options are boolean <dfn>TRUE</dfn>/<dfn>FALSE</dfn>:</p>
+<p>The third parameter determines whether or not lowercase characters are forced. By default they are not. Options are boolean <dfn>TRUE</dfn>/<dfn>FALSE</dfn>:</p>
 
 <code>$title = "What's wrong with CSS?";<br />
 <br />
 $url_title = url_title($title, 'underscore', TRUE);<br />
 <br />
-// Produces:  whats_wrong_with_css
+// Produces: whats_wrong_with_css
 </code>
 
 <h3>prep_url()</h3>
-<p>This function will add <kbd>http://</kbd> in the event that a scheme is missing from a URL.  Pass the URL string to the function like this:</p>
+<p>This function will add <kbd>http://</kbd> in the event that a scheme is missing from a URL. Pass the URL string to the function like this:</p>
 <code>
 $url = "example.com";<br /><br />
 $url = prep_url($url);</code>
@@ -250,7 +250,7 @@
 to the controller you want to direct to will create the link. The function will build the URL based on your config file values.</p>
 
 <p>The optional second parameter allows you to choose between the "location"
-method (default) or the "refresh" method.  Location is faster, but on Windows servers it can sometimes be a problem.  The optional third parameter allows you to send a specific HTTP Response Code - this could be used for example to create 301 redirects for search engine purposes. The default Response Code is 302. The third parameter is <em>only</em> available with 'location' redirects, and not 'refresh'. Examples:</p>
+method (default) or the "refresh" method. Location is faster, but on Windows servers it can sometimes be a problem. The optional third parameter allows you to send a specific HTTP Response Code - this could be used for example to create 301 redirects for search engine purposes. The default Response Code is 302. The third parameter is <em>only</em> available with 'location' redirects, and not 'refresh'. Examples:</p>
 
 <code>if ($logged_in == FALSE)<br />
 {<br />
@@ -262,7 +262,7 @@
 
 <p class="important"><strong>Note:</strong> In order for this function to work it must be used before anything is outputted
 to the browser since it utilizes server headers.<br />
-<strong>Note:</strong> For  very fine grained control over headers, you should use the <a href="../libraries/output.html">Output  Library</a>'s set_header() function.</p>
+<strong>Note:</strong> For very fine grained control over headers, you should use the <a href="../libraries/output.html">Output Library</a>'s set_header() function.</p>
 
 
 
diff --git a/user_guide/helpers/xml_helper.html b/user_guide/helpers/xml_helper.html
index ded9aaa..b3d408c 100644
--- a/user_guide/helpers/xml_helper.html
+++ b/user_guide/helpers/xml_helper.html
@@ -78,7 +78,7 @@
 Single and double quotes: ' &nbsp;"<br />
 Dashes: -</p>
 
-<p>This function ignores ampersands if they are part of existing character entities.  Example:</p>
+<p>This function ignores ampersands if they are part of existing character entities. Example:</p>
 
 <code>$string = xml_convert($string);</code>
 
diff --git a/user_guide/installation/index.html b/user_guide/installation/index.html
index 87da518..f62aadb 100644
--- a/user_guide/installation/index.html
+++ b/user_guide/installation/index.html
@@ -61,24 +61,24 @@
 
 <ol>
 <li>Unzip the package.</li>
-<li>Upload the CodeIgniter folders and files to your server.  Normally the index.php file will be at your root.</li>
-<li>Open the <dfn>application/config/config.php</dfn> file with a text editor and set your base URL.  If you intend to use encryption or sessions, set your encryption key.</li>
+<li>Upload the CodeIgniter folders and files to your server. Normally the index.php file will be at your root.</li>
+<li>Open the <dfn>application/config/config.php</dfn> file with a text editor and set your base URL. If you intend to use encryption or sessions, set your encryption key.</li>
 <li>If you intend to use a database, open the <dfn>application/config/database.php</dfn> file with a text editor and set your database settings.</li>
 </ol>
 
 <p>If you wish to increase security by hiding the location of your CodeIgniter files you can rename the <dfn>system</dfn> and <dfn>application</dfn> folders
-to something more private.  If you do rename them, you must open your main <kbd>index.php</kbd> file and set the <samp>$system_folder</samp> and <samp>$application_folder</samp>
+to something more private. If you do rename them, you must open your main <kbd>index.php</kbd> file and set the <samp>$system_folder</samp> and <samp>$application_folder</samp>
 variables at the top of the file with the new name you've chosen.</p>
 
-<p>For the best security, both the <dfn>system</dfn> and any <dfn>application</dfn> folders should be placed above web root so that they are not directly accessible via a browser.  By default, .htaccess files are included in each folder to help prevent direct access, but it is best to remove them from public access entirely in case the web server configuration changes or doesn't abide by the .htaccess.</p>
+<p>For the best security, both the <dfn>system</dfn> and any <dfn>application</dfn> folders should be placed above web root so that they are not directly accessible via a browser. By default, .htaccess files are included in each folder to help prevent direct access, but it is best to remove them from public access entirely in case the web server configuration changes or doesn't abide by the .htaccess.</p>
 
 <p>After moving them, open your main <kdb>index.php</kbd> file and set the <samp>$system_folder</samp> and <samp>$application_folder</samp> variables, preferably with a full path, e.g. '<dfn>/www/MyUser/system</dfn>'.</p>
 
 <p>
-    One additional measure to take in production environments is to disable
-    PHP error reporting and any other development-only functionality. In CodeIgniter,
-    this can be done by setting the <kbd>ENVIRONMENT</kbd> constant, which is
-    more fully described on the <a href="../general/security.html">security page</a>.
+  One additional measure to take in production environments is to disable
+  PHP error reporting and any other development-only functionality. In CodeIgniter,
+  this can be done by setting the <kbd>ENVIRONMENT</kbd> constant, which is
+  more fully described on the <a href="../general/security.html">security page</a>.
 </p>
 
 <p>That's it!</p>
diff --git a/user_guide/installation/troubleshooting.html b/user_guide/installation/troubleshooting.html
index 2a50b8d..f99fc0a 100644
--- a/user_guide/installation/troubleshooting.html
+++ b/user_guide/installation/troubleshooting.html
@@ -61,8 +61,8 @@
 does not support the PATH_INFO variable needed to serve search-engine friendly URLs.
 
 As a first step, open your <dfn>application/config/config.php</dfn> file and look for the <kbd>URI Protocol</kbd>
-information. It will recommend that you try a couple alternate settings.  If it still doesn't work after you've tried this you'll need
-to force CodeIgniter to add a question mark to your URLs.  To do this open your <kbd>application/config/config.php</kbd> file and change this:</p>
+information. It will recommend that you try a couple alternate settings. If it still doesn't work after you've tried this you'll need
+to force CodeIgniter to add a question mark to your URLs. To do this open your <kbd>application/config/config.php</kbd> file and change this:</p>
 
 <code>$config['index_page'] = "index.php";</code>
 
diff --git a/user_guide/installation/upgrade_130.html b/user_guide/installation/upgrade_130.html
index f7ffac7..e6bb948 100644
--- a/user_guide/installation/upgrade_130.html
+++ b/user_guide/installation/upgrade_130.html
@@ -57,7 +57,7 @@
 
 <h1>Upgrading from 1.2 to 1.3</h1>
 
-<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.2.  If you
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.2. If you
 have not upgraded to that version please do so first.</p>
 
 
@@ -72,8 +72,8 @@
 <p class="important"><strong>Note:</strong> If you have any custom developed files in these folders please make copies of them first.</p>
 
 <ul>
-<li>application/<strong>models</strong>/&nbsp;&nbsp;  (new for 1.3)</li>
-<li>codeigniter&nbsp;&nbsp;   (new for 1.3)</li>
+<li>application/<strong>models</strong>/&nbsp;&nbsp; (new for 1.3)</li>
+<li>codeigniter&nbsp;&nbsp;  (new for 1.3)</li>
 <li>drivers</li>
 <li>helpers</li>
 <li>init</li>
@@ -109,7 +109,7 @@
 
 <h2>Step 3: Update your index.php file</h2>
 
-<p>Please open your main <dfn>index.php</dfn> file (located at your root).  At the very bottom of the file, change this:</p>
+<p>Please open your main <dfn>index.php</dfn> file (located at your root). At the very bottom of the file, change this:</p>
 
 <code>require_once BASEPATH.'libraries/Front_controller'.EXT;</code>
 
diff --git a/user_guide/installation/upgrade_131.html b/user_guide/installation/upgrade_131.html
index 7541a83..a7025f2 100644
--- a/user_guide/installation/upgrade_131.html
+++ b/user_guide/installation/upgrade_131.html
@@ -57,7 +57,7 @@
 
 <h1>Upgrading from 1.3 to 1.3.1</h1>
 
-<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.  If you
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3. If you
 have not upgraded to that version please do so first.</p>
 
 <p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
diff --git a/user_guide/installation/upgrade_132.html b/user_guide/installation/upgrade_132.html
index 4fcbb46..3b71594 100644
--- a/user_guide/installation/upgrade_132.html
+++ b/user_guide/installation/upgrade_132.html
@@ -57,7 +57,7 @@
 
 <h1>Upgrading from 1.3.1 to 1.3.2</h1>
 
-<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.1.  If you
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.1. If you
 have not upgraded to that version please do so first.</p>
 
 <p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
diff --git a/user_guide/installation/upgrade_133.html b/user_guide/installation/upgrade_133.html
index c634659..a81f67b 100644
--- a/user_guide/installation/upgrade_133.html
+++ b/user_guide/installation/upgrade_133.html
@@ -57,7 +57,7 @@
 
 <h1>Upgrading from 1.3.2 to 1.3.3</h1>
 
-<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.2.  If you
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.2. If you
 have not upgraded to that version please do so first.</p>
 
 <p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
@@ -83,9 +83,9 @@
 
 <p>If you are <strong>NOT</strong> using CodeIgniter's <a href="../general/models.html">Models</a> feature disregard this step.</p>
 
-<p>As of version 1.3.3, CodeIgniter does <strong>not</strong> connect automatically to your database when a model is loaded.  This
-allows you greater flexibility in determining which databases you would like used with your models.  If your application is not connecting
-to your database prior to a model being loaded you will have to update your code.  There are several options for connecting,
+<p>As of version 1.3.3, CodeIgniter does <strong>not</strong> connect automatically to your database when a model is loaded. This
+allows you greater flexibility in determining which databases you would like used with your models. If your application is not connecting
+to your database prior to a model being loaded you will have to update your code. There are several options for connecting,
 <a href="../general/models.html">as described here</a>.</p>
 
 
diff --git a/user_guide/installation/upgrade_140.html b/user_guide/installation/upgrade_140.html
index 2049628..234e2f5 100644
--- a/user_guide/installation/upgrade_140.html
+++ b/user_guide/installation/upgrade_140.html
@@ -57,7 +57,7 @@
 
 <h1>Upgrading from 1.3.3 to 1.4.0</h1>
 
-<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.3.  If you
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.3. If you
 have not upgraded to that version please do so first.</p>
 
 <p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
@@ -95,7 +95,7 @@
 |--------------------------------------------------------------------------
 |
 | If you would like to use the "hooks" feature you must enable it by
-| setting this variable to TRUE (boolean).  See the user guide for details.
+| setting this variable to TRUE (boolean). See the user guide for details.
 |
 */
 $config['enable_hooks'] = FALSE;
@@ -111,7 +111,7 @@
 | get a warning message.
 |
 | As a security measure you are STRONGLY encouraged to restrict URLs to
-| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
+| as few characters as possible. By default only these are allowed: a-z 0-9~%.:_-
 |
 | Leave blank to allow all characters -- but only if you are insane.
 |
diff --git a/user_guide/installation/upgrade_141.html b/user_guide/installation/upgrade_141.html
index c19143c..79e51e4 100644
--- a/user_guide/installation/upgrade_141.html
+++ b/user_guide/installation/upgrade_141.html
@@ -56,7 +56,7 @@
 
 <h1>Upgrading from 1.4.0 to 1.4.1</h1>
 
-<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.4.0.  If you
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.4.0. If you
 have not upgraded to that version please do so first.</p>
 
 <p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
@@ -88,16 +88,16 @@
 | Output Compression
 |--------------------------------------------------------------------------
 |
-| Enables Gzip output compression for faster page loads.  When enabled,
+| Enables Gzip output compression for faster page loads. When enabled,
 | the output class will test whether your server supports Gzip.
 | Even if it does, however, not all browsers support compression
 | so enable only if you are reasonably sure your visitors can handle it.
 |
-| VERY IMPORTANT:  If you are getting a blank page when compression is enabled it
+| VERY IMPORTANT: If you are getting a blank page when compression is enabled it
 | means you are prematurely outputting something to your browser. It could
-| even be a line of whitespace at the end of one of your scripts.  For
+| even be a line of whitespace at the end of one of your scripts. For
 | compression to work, nothing can be sent before the output buffer is called
-| by the output class.  Do not "echo" any values with compression enabled.
+| by the output class. Do not "echo" any values with compression enabled.
 |
 */
 $config['compress_output'] = FALSE;
diff --git a/user_guide/installation/upgrade_150.html b/user_guide/installation/upgrade_150.html
index 342d486..9cd0089 100644
--- a/user_guide/installation/upgrade_150.html
+++ b/user_guide/installation/upgrade_150.html
@@ -57,7 +57,7 @@
 
 <h1>Upgrading from 1.4.1 to 1.5.0</h1>
 
-<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.4.1.  If you
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.4.1. If you
 have not upgraded to that version please do so first.</p>
 
 <p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
@@ -105,7 +105,7 @@
 |--------------------------------------------------------------------------
 |
 | This item allows you to set the filename/classname prefix when extending
-| native libraries.  For more information please see the user guide:
+| native libraries. For more information please see the user guide:
 |
 | http://codeigniter.com/user_guide/general/core_classes.html
 | http://codeigniter.com/user_guide/general/creating_libraries.html
@@ -120,7 +120,7 @@
 |
 | If your PHP installation does not have short tag support enabled CI
 | can rewrite the tags on-the-fly, enabling you to utilize that syntax
-| in your view files.  Options are TRUE or FALSE (boolean)
+| in your view files. Options are TRUE or FALSE (boolean)
 |
 */
 $config['rewrite_short_tags'] = FALSE;
@@ -136,7 +136,7 @@
 |--------------------------------------------------------------------------
 |
 | If you would like errors or debug messages logged set this variable to
-| TRUE (boolean).  Note: You must set the file permissions on the "logs" folder
+| TRUE (boolean). Note: You must set the file permissions on the "logs" folder
 | such that it is writable.
 |
 */
diff --git a/user_guide/installation/upgrade_152.html b/user_guide/installation/upgrade_152.html
index f601a25..136e309 100644
--- a/user_guide/installation/upgrade_152.html
+++ b/user_guide/installation/upgrade_152.html
@@ -57,7 +57,7 @@
 
 <h1>Upgrading from 1.5.0 to 1.5.2</h1>
 
-<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.5.0 or 1.5.1.  If you
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.5.0 or 1.5.1. If you
 have not upgraded to that version please do so first.</p>
 
 <p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
diff --git a/user_guide/installation/upgrade_160.html b/user_guide/installation/upgrade_160.html
index d06f58e..2adeff3 100644
--- a/user_guide/installation/upgrade_160.html
+++ b/user_guide/installation/upgrade_160.html
@@ -84,16 +84,16 @@
 <p>Add the following to application/config/autoload.php</p>
 <p><code> /*<br />
 	| -------------------------------------------------------------------<br />
-	|  Auto-load Model files<br />
+	| Auto-load Model files<br />
 	| -------------------------------------------------------------------<br />
 	| Prototype:<br />
 	|<br />
-	|  $autoload['model'] = array('my_model');<br />
+	| $autoload['model'] = array('my_model');<br />
 	|<br />
 	*/<br />
 	<br />
 	$autoload['model'] = array();</code></p>
-<h2>Step 4: Add  to your database.php </h2>
+<h2>Step 4: Add to your database.php </h2>
 <p>Make the following changes to your application/config/database.php file:</p>
 <p>Add the following variable above the database configuration options, with <dfn>$active_group</dfn></p>
 <p><code>$active_record = TRUE;</code></p>
diff --git a/user_guide/installation/upgrade_170.html b/user_guide/installation/upgrade_170.html
index 01597a4..6fd92f5 100644
--- a/user_guide/installation/upgrade_170.html
+++ b/user_guide/installation/upgrade_170.html
@@ -88,14 +88,14 @@
 
 <code>ALTER TABLE `ci_sessions` ADD `user_data` text NOT NULL</code>
 
-<p>You'll find more information regarding the new Session functionality in the  <a href="../libraries/sessions.html">Session class</a> page.</p>
+<p>You'll find more information regarding the new Session functionality in the <a href="../libraries/sessions.html">Session class</a> page.</p>
 
 
 <h2>Step 3: Update your Validation Syntax</h2>
 
-<p>This is an <strong>optional</strong>, but recommended step, for people currently using the Validation class.  CI 1.7 introduces a new  <a href="../libraries/form_validation.html">Form Validation class</a>, which
-deprecates the old Validation library.  We have left the old one in place so that existing applications that use it will not break, but you are encouraged to
-migrate to the new version as soon as possible.  Please read the user guide carefully as the new library works a little differently, and has several new features.</p>
+<p>This is an <strong>optional</strong>, but recommended step, for people currently using the Validation class. CI 1.7 introduces a new <a href="../libraries/form_validation.html">Form Validation class</a>, which
+deprecates the old Validation library. We have left the old one in place so that existing applications that use it will not break, but you are encouraged to
+migrate to the new version as soon as possible. Please read the user guide carefully as the new library works a little differently, and has several new features.</p>
 
 
 
diff --git a/user_guide/installation/upgrade_200.html b/user_guide/installation/upgrade_200.html
index 0b24079..cd39d92 100644
--- a/user_guide/installation/upgrade_200.html
+++ b/user_guide/installation/upgrade_200.html
@@ -69,8 +69,8 @@
 
 <h2>Step 2: Adjust get_dir_file_info() where necessary</h2>
 
-<p>Version 2.0.0 brings a non-backwards compatible change to <kbd>get_dir_file_info()</kbd> in the <a href="../helpers/file_helper.html">File Helper</a>.  Non-backwards compatible changes are extremely rare
-	in CodeIgniter, but this one we feel was warranted due to how easy it was to create serious server performance issues.  If you <em>need</em>
+<p>Version 2.0.0 brings a non-backwards compatible change to <kbd>get_dir_file_info()</kbd> in the <a href="../helpers/file_helper.html">File Helper</a>. Non-backwards compatible changes are extremely rare
+	in CodeIgniter, but this one we feel was warranted due to how easy it was to create serious server performance issues. If you <em>need</em>
 	recursiveness where you are using this helper function, change such instances, setting the second parameter, <kbd>$top_level_only</kbd> to FALSE:</p>
 
 <code>get_dir_file_info('/path/to/directory', <kbd>FALSE</kbd>);</code>
@@ -79,7 +79,7 @@
 
 <h2>Step 3: Convert your Plugins to Helpers</h2>
 
-<p>2.0.0 gets rid of the "Plugin" system as their functionality was identical to Helpers, but non-extensible.  You will need to rename your plugin files from <var>filename_pi.php</var> to <var>filename_helper.php</var>, move them to your <kbd>helpers</kbd> folder, and change all instances of:
+<p>2.0.0 gets rid of the "Plugin" system as their functionality was identical to Helpers, but non-extensible. You will need to rename your plugin files from <var>filename_pi.php</var> to <var>filename_helper.php</var>, move them to your <kbd>helpers</kbd> folder, and change all instances of:
 
 	<code>$this->load->plugin('foo');</code>
 
@@ -94,7 +94,7 @@
 <p class="important"><strong>Note:</strong> If your application does not use the Encryption library, does not store Encrypted data permanently, or is on an environment that does not support Mcrypt, you may skip this step.</p>
 
 <p>The Encryption library has had a number of improvements, some for encryption strength and some for performance, that has an unavoidable consequence of
-	making it no longer possible to decode encrypted data produced by the original version of this library.  To help with the transition, a new method has
+	making it no longer possible to decode encrypted data produced by the original version of this library. To help with the transition, a new method has
 	been added, <kbd>encode_from_legacy()</kbd> that will decode the data with the original algorithm and return a re-encoded string using the improved methods.
 	This will enable you to easily replace stale encrypted data with fresh in your applications, either on the fly or en masse.</p>
 
@@ -104,7 +104,7 @@
 <p>The compatibility helper has been removed from the CodeIgniter core. All methods in it should be natively available in supported PHP versions.</p>
 
 <h2>Step 6: Update Class extension</h2>
-<p>All core classes are now prefixed with <kbd>CI_</kbd>.  Update Models and Controllers to extend CI_Model and CI_Controller, respectively.</p> 
+<p>All core classes are now prefixed with <kbd>CI_</kbd>. Update Models and Controllers to extend CI_Model and CI_Controller, respectively.</p>
 
 <h2>Step 7: Update Parent Constructor calls</h2>
 <p>All native CodeIgniter classes now use the PHP 5 <kbd>__construct()</kbd> convention. Please update extended libraries to call <kbd>parent::__construct()</kbd>.</p>
diff --git a/user_guide/installation/upgrade_202.html b/user_guide/installation/upgrade_202.html
index d457d8b..93c5372 100644
--- a/user_guide/installation/upgrade_202.html
+++ b/user_guide/installation/upgrade_202.html
@@ -76,7 +76,7 @@
 
 <p>If you are overriding or extending the Security library, you will need to move it to <kbd>application/core</kbd>.</p>
 
-<p><samp>csrf_token_name</samp> and <samp>csrf_hash</samp> have changed to protected class properties.  Please use <samp>security->get_csrf_hash()</samp> and <samp>security->get_csrf_token_name()</samp> to access those values.</p>
+<p><samp>csrf_token_name</samp> and <samp>csrf_hash</samp> have changed to protected class properties. Please use <samp>security->get_csrf_hash()</samp> and <samp>security->get_csrf_token_name()</samp> to access those values.</p>
 
 </div>
 <!-- END CONTENT -->
diff --git a/user_guide/installation/upgrade_203.html b/user_guide/installation/upgrade_203.html
index 7dbc907..d1c9a94 100644
--- a/user_guide/installation/upgrade_203.html
+++ b/user_guide/installation/upgrade_203.html
@@ -69,7 +69,7 @@
 <h2>Step 2: Update CodeIgniter files</h2>
 
 <p>Replace the files and directories in your "system" folder with the new versions:</p>
-	
+
 <h2>Step 3: Update your main index.php file</h2>
 
 <p>If you are running a stock <dfn>index.php</dfn> file simply replace your version with the new one.</p>
@@ -81,7 +81,7 @@
 <p>This config file has been updated to contain more user agent types, please copy it to <kbd>application/config/user_agents.php</kbd>.</p>
 
 <h2>Step 5: Change references of the EXT constant to ".php"</h2>
-<p class="important"><strong>Note:</strong> The EXT Constant has been marked as deprecated, but has not been removed from the application.  You are encouraged to make the changes sooner rather than later.</p>
+<p class="important"><strong>Note:</strong> The EXT Constant has been marked as deprecated, but has not been removed from the application. You are encouraged to make the changes sooner rather than later.</p>
 
 <h2>Step 6: Remove APPPATH.'third_party' from autoload.php</h2>
 
@@ -101,10 +101,10 @@
 <code>
 	CREATE INDEX last_activity_idx ON ci_sessions(last_activity);
 	ALTER TABLE ci_sessions MODIFY user_agent VARCHAR(120);
-</code>	
-	
-	
-	
+</code>
+
+
+
 
 </div>
 <!-- END CONTENT -->
diff --git a/user_guide/installation/upgrade_b11.html b/user_guide/installation/upgrade_b11.html
index add7228..d2fc20d 100644
--- a/user_guide/installation/upgrade_b11.html
+++ b/user_guide/installation/upgrade_b11.html
@@ -61,7 +61,7 @@
 
 <h2>Step 1: Replace your index file</h2>
 
-<p>Replace your main <kbd>index.php</kbd> file with the new index.php file. Note:  If you have renamed your "system" folder you will need to edit this info in the new file.</p>
+<p>Replace your main <kbd>index.php</kbd> file with the new index.php file. Note: If you have renamed your "system" folder you will need to edit this info in the new file.</p>
 
 <h2>Step 2: Relocate your config folder</h2>
 
@@ -91,7 +91,7 @@
 
 <h2>Step 5: Edit your config file</h2>
 
-<p>The original <kbd>application/config/config.php</kbd> file has a typo in it  Open the file and look for the items related to cookies:</p>
+<p>The original <kbd>application/config/config.php</kbd> file has a typo in it Open the file and look for the items related to cookies:</p>
 
 <code>$conf['cookie_prefix']	= "";<br />
 $conf['cookie_domain']	= "";<br />
@@ -112,7 +112,7 @@
 |------------------------------------------------<br />
 |<br />
 | This item determines which server global <br />
-| should be used to retrieve the URI string.  The <br />
+| should be used to retrieve the URI string. The <br />
 | default setting of "auto" works for most servers.<br />
 | If your links do not seem to work, try one of <br />
 | the other delicious flavors:<br />
diff --git a/user_guide/libraries/benchmark.html b/user_guide/libraries/benchmark.html
index c29acb7..4dadf6b 100644
--- a/user_guide/libraries/benchmark.html
+++ b/user_guide/libraries/benchmark.html
@@ -83,7 +83,7 @@
 <a name="using"></a>
 <h2>Using the Benchmark Class</h2>
 
-<p>The Benchmark class can be used within your <a href="../general/controllers.html">controllers</a>,  <a href="../general/views.html">views</a>, or your  <a href="../general/models.html">models</a>.  The process for usage is this:</p>
+<p>The Benchmark class can be used within your <a href="../general/controllers.html">controllers</a>, <a href="../general/views.html">views</a>, or your <a href="../general/models.html">models</a>. The process for usage is this:</p>
 
 <ol>
 <li>Mark a start point</li>
@@ -101,7 +101,7 @@
 <br />
 echo $this->benchmark->elapsed_time('code_start', 'code_end');</code>
 
-<p class="important"><strong>Note:</strong> The words "code_start" and "code_end" are arbitrary.  They are simply words used to set two markers.  You can
+<p class="important"><strong>Note:</strong> The words "code_start" and "code_end" are arbitrary. They are simply words used to set two markers. You can
 use any words you want, and you can set multiple sets of markers. Consider this example:</p>
 
 <code>$this->benchmark->mark('dog');<br />
@@ -154,8 +154,8 @@
 <code>&lt;?php echo $this->benchmark->elapsed_time();?&gt;</code>
 
 <p>You'll notice that it's the same function used in the examples above to calculate the time between two point, except you are
-<strong>not</strong> using any parameters.  When the parameters are absent, CodeIgniter does not stop the benchmark until right before the final
-output is sent to the browser.  It doesn't matter where you use the function call, the timer will continue to run until the very end.</p>
+<strong>not</strong> using any parameters. When the parameters are absent, CodeIgniter does not stop the benchmark until right before the final
+output is sent to the browser. It doesn't matter where you use the function call, the timer will continue to run until the very end.</p>
 
 <p>An alternate way to show your elapsed time in your view files is to use this pseudo-variable, if you prefer not to use the pure PHP:</p>
 <code>{elapsed_time}</code>
diff --git a/user_guide/libraries/caching.html b/user_guide/libraries/caching.html
index 190232e..3fa9fa6 100644
--- a/user_guide/libraries/caching.html
+++ b/user_guide/libraries/caching.html
@@ -58,7 +58,7 @@
 
 <h1>Caching Driver</h1>
 
-<p>CodeIgniter features wrappers around some of the most popular forms of fast and dynamic caching.  All but file-based caching require specific server requirements, and a Fatal Exception will be thrown if server requirements are not met.</p>
+<p>CodeIgniter features wrappers around some of the most popular forms of fast and dynamic caching. All but file-based caching require specific server requirements, and a Fatal Exception will be thrown if server requirements are not met.</p>
 
 <h2>Table of Contents</h2>
 <ul>
@@ -97,7 +97,7 @@
 
 <h2>is_supported(<var>driver</var>['string'])</h2>
 
-<p>This function is automatically called when accessing drivers via <samp>$this->cache->get()</samp>.  However, if the individual drivers are used, make sure to call this function to ensure the driver is supported in the hosting environment.</p>
+<p>This function is automatically called when accessing drivers via <samp>$this->cache->get()</samp>. However, if the individual drivers are used, make sure to call this function to ensure the driver is supported in the hosting environment.</p>
 
 <code>
 if ($this->cache->apc->is_supported())<br />
@@ -111,23 +111,23 @@
 
 <h2>get(<var>id</var>['string'])</h2>
 
-<p>This function will attempt to fetch an item from the cache store.  If the item does not exist, the function will return <samp>FALSE</samp>.</p>
+<p>This function will attempt to fetch an item from the cache store. If the item does not exist, the function will return <samp>FALSE</samp>.</p>
 <code>$foo = $this->cache->get('my_cached_item');</code>
 
 <h2>save(<var>id</var>['string'], <var>data</var>['mixed'], <var>ttl</var>['int'])</h2>
 
-<p>This function will save an item to the cache store.  If saving fails, the function will return <samp>FALSE</samp>.</p>
+<p>This function will save an item to the cache store. If saving fails, the function will return <samp>FALSE</samp>.</p>
 <p>The optional third parameter (Time To Live) defaults to 60 seconds.</p>
 <code>$this->cache->save('cache_item_id', 'data_to_cache');</code>
 
 <h2>delete(<var>id</var>['string'])</h2>
 
-<p>This function will delete a specific item from the cache store.  If item deletion fails, the function will return <samp>FALSE</samp>.</p>
+<p>This function will delete a specific item from the cache store. If item deletion fails, the function will return <samp>FALSE</samp>.</p>
 <code>$this->cache->delete('cache_item_id');</code>
 
 <h2>clean()</h2>
 
-<p>This function will 'clean' the entire cache.  If the deletion of the cache files fails, the function will return <samp>FALSE</samp>.</p>
+<p>This function will 'clean' the entire cache. If the deletion of the cache files fails, the function will return <samp>FALSE</samp>.</p>
 
 <code>$this->cache->clean();</code>
 
@@ -154,7 +154,7 @@
 
 <h2 id="file">File-based Caching</h2>
 
-<p>Unlike caching from the Output Class, the driver file-based caching allows for pieces of view files to be cached.  Use this with care, and make sure to benchmark your application, as a point can come where disk I/O will negate positive gains by caching.</p>
+<p>Unlike caching from the Output Class, the driver file-based caching allows for pieces of view files to be cached. Use this with care, and make sure to benchmark your application, as a point can come where disk I/O will negate positive gains by caching.</p>
 
 <p>All of the functions listed above can be accessed without passing a specific adapter to the driver loader as follows:</p>
 <code>$this->load->driver('cache');<br />
@@ -172,7 +172,7 @@
 
 <h2 id="dummy">Dummy Cache</h2>
 
-<p>This is a caching backend that will always 'miss.'  It stores no data, but lets you keep your caching code in place in environments that don't support your chosen cache.</p>
+<p>This is a caching backend that will always 'miss.' It stores no data, but lets you keep your caching code in place in environments that don't support your chosen cache.</p>
 
 </div>
 <!-- END CONTENT -->
diff --git a/user_guide/libraries/calendar.html b/user_guide/libraries/calendar.html
index e1af71c..06dfec7 100644
--- a/user_guide/libraries/calendar.html
+++ b/user_guide/libraries/calendar.html
@@ -86,13 +86,13 @@
 <br />
 echo $this->calendar->generate(<kbd>2006</kbd>, <kbd>6</kbd>);</code>
 
-<p>The above code will generate a calendar showing the month of June in 2006.  The first parameter specifies the year, the second parameter specifies the month.</p>
+<p>The above code will generate a calendar showing the month of June in 2006. The first parameter specifies the year, the second parameter specifies the month.</p>
 
 <h2>Passing Data to your Calendar Cells</h2>
 
 <p>To add data to your calendar cells involves creating an associative array in which the keys correspond to the days
-you wish to populate and the array value contains the data.  The array is passed to the third parameter of the calendar
-generating function.  Consider this example:</p>
+you wish to populate and the array value contains the data. The array is passed to the third parameter of the calendar
+generating function. Consider this example:</p>
 
 <code>$this->load->library('calendar');<br />
 <br />
@@ -114,7 +114,7 @@
 
 <h2>Setting Display Preferences</h2>
 
-<p>There are seven preferences you can set to control various aspects of the calendar.  Preferences are set by passing an
+<p>There are seven preferences you can set to control various aspects of the calendar. Preferences are set by passing an
 array of preferences in the second parameter of the loading function. Here is an example:</p>
 
 
@@ -129,7 +129,7 @@
 <br />
 echo $this->calendar->generate();</code>
 
-<p>The above code would start the calendar on saturday, use the "long" month heading, and the "short" day names.  More information
+<p>The above code would start the calendar on saturday, use the "long" month heading, and the "short" day names. More information
 regarding preferences below.</p>
 
 
@@ -180,7 +180,7 @@
 <ul>
 <li>You must set the "show_next_prev" to TRUE.</li>
 <li>You must supply the URL to the controller containing your calendar in the "next_prev_url" preference.</li>
-<li>You must supply the "year" and "month" to the calendar generating function via the URI segments where they appear (Note:  The calendar class automatically adds the year/month to the base URL you provide.).</li>
+<li>You must supply the "year" and "month" to the calendar generating function via the URI segments where they appear (Note: The calendar class automatically adds the year/month to the base URL you provide.).</li>
 </ul>
 
 
diff --git a/user_guide/libraries/cart.html b/user_guide/libraries/cart.html
index f084d5d..433bd50 100644
--- a/user_guide/libraries/cart.html
+++ b/user_guide/libraries/cart.html
@@ -61,13 +61,13 @@
 <p>The Cart Class permits items to be added to a session that stays active while a user is browsing your site.
 These items can be retrieved and displayed in a standard "shopping cart" format, allowing the user to update the quantity or remove items from the cart.</p>
 
-<p>Please note that the Cart Class ONLY provides the core "cart" functionality.  It does not provide shipping, credit card authorization, or other processing components.</p>
+<p>Please note that the Cart Class ONLY provides the core "cart" functionality. It does not provide shipping, credit card authorization, or other processing components.</p>
 
 
 <h2>Initializing the Shopping Cart Class</h2>
 
 <p><strong>Important:</strong> The Cart class utilizes CodeIgniter's
-<a href="sessions.html">Session Class</a>  to save the cart information to a database, so before using the Cart class you must set up a database table
+<a href="sessions.html">Session Class</a> to save the cart information to a database, so before using the Cart class you must set up a database table
 as indicated in the <a href="sessions.html">Session Documentation</a> , and set the session preferences in your <kbd>application/config/config.php</kbd> file to utilize a database.</p>
 
 <p>To initialize the Shopping Cart Class in your controller constructor, use the <dfn>$this->load->library</dfn> function:</p>
@@ -106,19 +106,19 @@
 <li><strong>qty</strong> - The quantity being purchased.
 <li><strong>price</strong> - The price of the item.
 <li><strong>name</strong> - The name of the item.
-<li><strong>options</strong> - Any additional attributes that are needed to identify the product.  These must be passed via an array.
+<li><strong>options</strong> - Any additional attributes that are needed to identify the product. These must be passed via an array.
 </ul>
 
-<p>In addition to the five indexes above, there are two reserved words: <dfn>rowid</dfn> and <dfn>subtotal</dfn>.  These are used internally by the Cart class, so
+<p>In addition to the five indexes above, there are two reserved words: <dfn>rowid</dfn> and <dfn>subtotal</dfn>. These are used internally by the Cart class, so
 please do NOT use those words as index names when inserting data into the cart.</p>
 
-<p>Your array may contain additional data.  Anything you include in your array will be stored in the session.  However, it is best to standardize your data among
+<p>Your array may contain additional data. Anything you include in your array will be stored in the session. However, it is best to standardize your data among
 all your products in order to make displaying the information in a table easier.</p>
 
 
 <h2>Adding Multiple Items to The Cart</h2>
 
-<p>By using a multi-dimensional array, as shown below, it is possible to add multiple products to the cart in one action.  This is useful in cases where you wish to allow
+<p>By using a multi-dimensional array, as shown below, it is possible to add multiple products to the cart in one action. This is useful in cases where you wish to allow
 people to select from among several items on the same page.</p>
 
 
@@ -170,10 +170,10 @@
 &lt;table cellpadding="6" cellspacing="1" style="width:100%" border="0">
 
 &lt;tr>
-  &lt;th>QTY&lt;/th>
-  &lt;th>Item Description&lt;/th>
-  &lt;th style="text-align:right">Item Price&lt;/th>
-  &lt;th style="text-align:right">Sub-Total&lt;/th>
+ &lt;th>QTY&lt;/th>
+ &lt;th>Item Description&lt;/th>
+ &lt;th style="text-align:right">Item Price&lt;/th>
+ &lt;th style="text-align:right">Sub-Total&lt;/th>
 &lt;/tr>
 
 &lt;?php $i = 1; ?>
@@ -183,8 +183,8 @@
 	&lt;?php echo form_hidden($i.'[rowid]', $items['rowid']); ?>
 
 	&lt;tr>
-	  &lt;td>&lt;?php echo form_input(array('name' => $i.'[qty]', 'value' => $items['qty'], 'maxlength' => '3', 'size' => '5')); ?>&lt;/td>
-	  &lt;td>
+	 &lt;td>&lt;?php echo form_input(array('name' => $i.'[qty]', 'value' => $items['qty'], 'maxlength' => '3', 'size' => '5')); ?>&lt;/td>
+	 &lt;td>
 		&lt;?php echo $items['name']; ?>
 
 			&lt;?php if ($this->cart->has_options($items['rowid']) == TRUE): ?>
@@ -199,9 +199,9 @@
 
 			&lt;?php endif; ?>
 
-	  &lt;/td>
-	  &lt;td style="text-align:right">&lt;?php echo $this->cart->format_number($items['price']); ?>&lt;/td>
-	  &lt;td style="text-align:right">$&lt;?php echo $this->cart->format_number($items['subtotal']); ?>&lt;/td>
+	 &lt;/td>
+	 &lt;td style="text-align:right">&lt;?php echo $this->cart->format_number($items['price']); ?>&lt;/td>
+	 &lt;td style="text-align:right">$&lt;?php echo $this->cart->format_number($items['subtotal']); ?>&lt;/td>
 	&lt;/tr>
 
 &lt;?php $i++; ?>
@@ -209,9 +209,9 @@
 &lt;?php endforeach; ?>
 
 &lt;tr>
-  &lt;td colspan="2">&nbsp;&lt;/td>
-  &lt;td class="right">&lt;strong>Total&lt;/strong>&lt;/td>
-  &lt;td class="right">$&lt;?php echo $this->cart->format_number($this->cart->total()); ?>&lt;/td>
+ &lt;td colspan="2">&nbsp;&lt;/td>
+ &lt;td class="right">&lt;strong>Total&lt;/strong>&lt;/td>
+ &lt;td class="right">$&lt;?php echo $this->cart->format_number($this->cart->total()); ?>&lt;/td>
 &lt;/tr>
 
 &lt;/table>
@@ -265,11 +265,11 @@
 
 </code>
 
-<p><strong>What is a Row ID?</strong>&nbsp; The <kbd>row ID</kbd> is a unique identifier that is generated by the cart code when an item is added to the cart.  The reason a
+<p><strong>What is a Row ID?</strong>&nbsp; The <kbd>row ID</kbd> is a unique identifier that is generated by the cart code when an item is added to the cart. The reason a
 unique ID is created is so that identical products with different options can be managed by the cart.</p>
 
-<p>For example, let's say someone buys two identical t-shirts (same product ID), but in different sizes.  The product ID (and other attributes) will be
-identical for both sizes because it's the same shirt. The only difference will be the size.  The cart must therefore have a means of identifying this
+<p>For example, let's say someone buys two identical t-shirts (same product ID), but in different sizes. The product ID (and other attributes) will be
+identical for both sizes because it's the same shirt. The only difference will be the size. The cart must therefore have a means of identifying this
 difference so that the two sizes of shirts can be managed independently. It does so by creating a unique "row ID" based on the product ID and any options associated with it.</p>
 
 <p>In nearly all cases, updating the cart will be something the user does via the "view cart" page, so as a developer, it is unlikely that you will ever have to concern yourself
@@ -311,7 +311,7 @@
 
 <h2>$this->cart->has_options(rowid);</h2>
 
-<p>Returns TRUE (boolean) if a particular row in the cart contains options.  This function is designed to be used in a loop with <dfn>$this->cart->contents()</dfn>, since you must pass the <kbd>rowid</kbd> to this function, as shown in the <dfn>Displaying the Cart</dfn> example above.</p>
+<p>Returns TRUE (boolean) if a particular row in the cart contains options. This function is designed to be used in a loop with <dfn>$this->cart->contents()</dfn>, since you must pass the <kbd>rowid</kbd> to this function, as shown in the <dfn>Displaying the Cart</dfn> example above.</p>
 
 
 <h2>$this->cart->product_options(rowid);</h2>
@@ -322,7 +322,7 @@
 
 <h2>$this->cart->destroy();</h2>
 
-<p>Permits you to destroy the cart.  This function will likely be called when you are finished processing the customer's order.</p>
+<p>Permits you to destroy the cart. This function will likely be called when you are finished processing the customer's order.</p>
 
 
 
diff --git a/user_guide/libraries/config.html b/user_guide/libraries/config.html
index 2433ec4..c0192ca 100644
--- a/user_guide/libraries/config.html
+++ b/user_guide/libraries/config.html
@@ -58,7 +58,7 @@
 
 <h1>Config Class</h1>
 
-<p>The Config class provides a means to retrieve configuration preferences.  These preferences can
+<p>The Config class provides a means to retrieve configuration preferences. These preferences can
 come from the default config file (<samp>application/config/config.php</samp>) or from your own custom config files.</p>
 
 <p class="important"><strong>Note:</strong> This class is initialized automatically by the system so there is no need to do it manually.</p>
@@ -66,7 +66,7 @@
 
 <h2>Anatomy of a Config File</h2>
 
-<p>By default, CodeIgniter has one primary config file, located at <samp>application/config/config.php</samp>.  If you open the file using
+<p>By default, CodeIgniter has one primary config file, located at <samp>application/config/config.php</samp>. If you open the file using
 your text editor you'll see that config items are stored in an array called <var>$config</var>.</p>
 
 <p>You can add your own config items to
@@ -74,7 +74,7 @@
 simply create your own file and save it in <dfn>config</dfn> folder.</p>
 
 <p><strong>Note:</strong> If you do create your own config files use the same format as the primary one, storing your items in
-an array called  <var>$config</var>. CodeIgniter will intelligently manage these files so there will be no conflict even though
+an array called <var>$config</var>. CodeIgniter will intelligently manage these files so there will be no conflict even though
 the array has the same name (assuming an array index is not named the same as another).</p>
 
 <h2>Loading a Config File</h2>
@@ -92,12 +92,12 @@
 
 <p>Where <var>filename</var> is the name of your config file, without the .php file extension.</p>
 
-<p>If you need to load multiple config files normally they will be merged into one master config array.  Name collisions can occur, however, if
-you have identically named array indexes in different config files.  To avoid collisions you can set the second parameter to <kbd>TRUE</kbd>
+<p>If you need to load multiple config files normally they will be merged into one master config array. Name collisions can occur, however, if
+you have identically named array indexes in different config files. To avoid collisions you can set the second parameter to <kbd>TRUE</kbd>
 and each config file will be stored in an array index corresponding to the name of the config file. Example:</p>
 
 <code>
-// Stored in an array with this prototype:  $this->config['blog_settings'] = $config<br />
+// Stored in an array with this prototype: $this->config['blog_settings'] = $config<br />
 $this->config->load('<var>blog_settings</var>', <kbd>TRUE</kbd>);</code>
 
 <p>Please see the section entitled <dfn>Fetching Config Items</dfn> below to learn how to retrieve config items set this way.</p>
@@ -109,7 +109,7 @@
 </li>
 <li><strong>Auto-loading</strong>
 
-<p>If you find that you need a particular config file globally, you can have it loaded automatically by the system.  To do this,
+<p>If you find that you need a particular config file globally, you can have it loaded automatically by the system. To do this,
 open the <strong>autoload.php</strong> file, located at <samp>application/config/autoload.php</samp>, and add your config file as
 indicated in the file.</p>
 </li>
@@ -129,7 +129,7 @@
 <p>The function returns FALSE (boolean) if the item you are trying to fetch does not exist.</p>
 
 <p>If you are using the second parameter of the <kbd>$this->config->load</kbd> function in order to assign your config items to a specific index
-you can retrieve it by specifying the index name in the second parameter of the <kbd>$this->config->item()</kbd> function.  Example:</p>
+you can retrieve it by specifying the index name in the second parameter of the <kbd>$this->config->item()</kbd> function. Example:</p>
 
 <code>
 // Loads a config file named blog_settings.php and assigns it to an index named "blog_settings"<br />
@@ -154,32 +154,32 @@
 <h2>Environments</h2>
 
 <p>
-    You may load different configuration files depending on the current environment.
-    The <kbd>ENVIRONMENT</kbd> constant is defined in index.php, and is described
-    in detail in the <a href="../general/environments.html">Handling Environments</a>
-    section.
+  You may load different configuration files depending on the current environment.
+  The <kbd>ENVIRONMENT</kbd> constant is defined in index.php, and is described
+  in detail in the <a href="../general/environments.html">Handling Environments</a>
+  section.
 </p>
 
 <p>
-    To create an environment-specific configuration file,
-    create or copy a configuration file in application/config/{ENVIRONMENT}/{FILENAME}.php
+  To create an environment-specific configuration file,
+  create or copy a configuration file in application/config/{ENVIRONMENT}/{FILENAME}.php
 </p>
 
 <p>For example, to create a production-only config.php, you would:</p>
 
 <ol>
-    <li>Create the directory application/config/production/</li>
-    <li>Copy your existing config.php into the above directory</li>
-    <li>Edit application/config/production/config.php so it contains your production settings</li>
+  <li>Create the directory application/config/production/</li>
+  <li>Copy your existing config.php into the above directory</li>
+  <li>Edit application/config/production/config.php so it contains your production settings</li>
 </ol>
 
 <p>
-    When you set the <kbd>ENVIRONMENT</kbd> constant to 'production', the settings
-    for your new production-only config.php will be loaded.
+  When you set the <kbd>ENVIRONMENT</kbd> constant to 'production', the settings
+  for your new production-only config.php will be loaded.
 </p>
 
 <p>You can place the following configuration files in environment-specific folders:</p>
-	
+
 <ul>
 <li>Default CodeIgniter configuration files</li>
 <li>Your own custom configuration files</li>
diff --git a/user_guide/libraries/email.html b/user_guide/libraries/email.html
index 5a8814d..61e1391 100644
--- a/user_guide/libraries/email.html
+++ b/user_guide/libraries/email.html
@@ -78,7 +78,7 @@
 
 <p>Sending email is not only simple, but you can configure it on the fly or set your preferences in a config file.</p>
 
-<p>Here is a basic example demonstrating how you might send email.  Note:  This example assumes you are sending the email from one of your
+<p>Here is a basic example demonstrating how you might send email. Note: This example assumes you are sending the email from one of your
 <a href="../general/controllers.html">controllers</a>.</p>
 
 <code>$this->load->library('email');<br />
@@ -103,7 +103,7 @@
 <p>There are 17 different preferences available to tailor how your email messages are sent. You can either set them manually
 as described here, or automatically via preferences stored in your config file, described below:</p>
 
-<p>Preferences are set by passing an array of preference values to the email <dfn>initialize</dfn> function.  Here is an example of how you might set some preferences:</p>
+<p>Preferences are set by passing an array of preference values to the email <dfn>initialize</dfn> function. Here is an example of how you might set some preferences:</p>
 
 <code>$config['protocol'] = 'sendmail';<br />
 $config['mailpath'] = '/usr/sbin/sendmail';<br />
@@ -117,7 +117,7 @@
 ><h3>Setting Email Preferences in a Config File</h3>
 
 <p>If you prefer not to set preferences using the above method, you can instead put them into a config file.
-Simply create a new file called the <var>email.php</var>,  add the <var>$config</var>
+Simply create a new file called the <var>email.php</var>, add the <var>$config</var>
 array in that file. Then save the file at <var>config/email.php</var> and it will be used automatically. You
 will NOT need to use the <dfn>$this->email->initialize()</dfn> function if you save your preferences in a config file.</p>
 
@@ -156,13 +156,13 @@
 </tr><tr>
 <td class="td"><strong>wrapchars</strong></td><td class="td">76</td><td class="td"> </td><td class="td">Character count to wrap at.</td>
 </tr><tr>
-<td class="td"><strong>mailtype</strong></td><td class="td">text</td><td class="td">text or html</td><td class="td">Type of mail. If you send HTML email you must send it as a complete web page.  Make sure you don't have any relative links or relative image paths otherwise they will not work.</td>
+<td class="td"><strong>mailtype</strong></td><td class="td">text</td><td class="td">text or html</td><td class="td">Type of mail. If you send HTML email you must send it as a complete web page. Make sure you don't have any relative links or relative image paths otherwise they will not work.</td>
 </tr><tr>
 <td class="td"><strong>charset</strong></td><td class="td">utf-8</td><td class="td"></td><td class="td">Character set (utf-8, iso-8859-1, etc.).</td>
 </tr><tr>
-<td class="td"><strong>validate</strong></td><td class="td">FALSE</td><td class="td">TRUE or FALSE  (boolean)</td><td class="td">Whether to validate the email address.</td>
+<td class="td"><strong>validate</strong></td><td class="td">FALSE</td><td class="td">TRUE or FALSE (boolean)</td><td class="td">Whether to validate the email address.</td>
 </tr><tr>
-<td class="td"><strong>priority</strong></td><td class="td">3</td><td class="td">1, 2, 3, 4, 5</td><td class="td">Email Priority. 1 = highest.  5 = lowest.  3 = normal.</td>
+<td class="td"><strong>priority</strong></td><td class="td">3</td><td class="td">1, 2, 3, 4, 5</td><td class="td">Email Priority. 1 = highest. 5 = lowest. 3 = normal.</td>
 </tr>
 <tr>
 	<td class="td"><strong>crlf</strong></td>
@@ -188,12 +188,12 @@
 <code>$this->email->from('<var>you@example.com</var>', '<var>Your Name</var>');</code>
 
 <h3>$this->email->reply_to()</h3>
-<p>Sets the reply-to address.  If the information is not provided the information in the "from" function is used. Example:</p>
+<p>Sets the reply-to address. If the information is not provided the information in the "from" function is used. Example:</p>
 <code>$this->email->reply_to('<var>you@example.com</var>', '<var>Your Name</var>');</code>
 
 
 <h3>$this->email->to()</h3>
-<p>Sets the email address(s) of the recipient(s).  Can be a single email, a comma-delimited list or an array:</p>
+<p>Sets the email address(s) of the recipient(s). Can be a single email, a comma-delimited list or an array:</p>
 
 <code>$this->email->to('<var>someone@example.com</var>');</code>
 <code>$this->email->to('<var>one@example.com</var>, <var>two@example.com</var>, <var>three@example.com</var>');</code>
@@ -221,14 +221,14 @@
 <p>Sets the alternative email message body:</p>
 <code>$this->email->set_alt_message('<var>This is the alternative message</var>');</code>
 
-<p>This is an optional message string which can be used if you send HTML formatted email.  It lets you specify an alternative
+<p>This is an optional message string which can be used if you send HTML formatted email. It lets you specify an alternative
 message with no HTML formatting which is added to the header string for people who do not accept HTML email.
 If you do not set your own message CodeIgniter will extract the message from your HTML email and strip the tags.</p>
 
 
 
 <h3>$this->email->clear()</h3>
-<p>Initializes all the email variables to an empty state.  This function is intended for use if you run the email sending function
+<p>Initializes all the email variables to an empty state. This function is intended for use if you run the email sending function
 in a loop, permitting the data to be reset between cycles.</p>
 <code>foreach ($list as $name => $address)<br />
 {<br />
@@ -268,13 +268,13 @@
 
 
 <h3>$this->email->print_debugger()</h3>
-<p>Returns a string containing any server messages, the email headers, and the email messsage.  Useful for debugging.</p>
+<p>Returns a string containing any server messages, the email headers, and the email messsage. Useful for debugging.</p>
 
 
 <h2>Overriding Word Wrapping</h2>
 
 <p>If you have word wrapping enabled (recommended to comply with RFC 822) and you have a very long link in your email it can
-get wrapped too, causing it to become un-clickable by the person receiving it.  CodeIgniter lets you manually override
+get wrapped too, causing it to become un-clickable by the person receiving it. CodeIgniter lets you manually override
 word wrapping within part of your message like this:</p>
 
 <code>The text of your email that<br />
diff --git a/user_guide/libraries/encryption.html b/user_guide/libraries/encryption.html
index 6009931..96ad54b 100644
--- a/user_guide/libraries/encryption.html
+++ b/user_guide/libraries/encryption.html
@@ -58,9 +58,9 @@
 
 <h1>Encryption Class</h1>
 
-<p>The Encryption Class provides two-way data encryption.  It uses a scheme that either compiles
+<p>The Encryption Class provides two-way data encryption. It uses a scheme that either compiles
 the message using a randomly hashed bitwise XOR encoding scheme, or is encrypted using
-the Mcrypt library.  If Mcrypt is not available on your server the encoded message will
+the Mcrypt library. If Mcrypt is not available on your server the encoded message will
 still provide a reasonable degree of security for encrypted sessions or other such "light" purposes.
 If Mcrypt is available, you'll be provided with a high degree of security appropriate for storage.</p>
 
@@ -72,7 +72,7 @@
 so not only must you choose the key carefully, you must never change it if you intend use it for persistent data.</p>
 
 <p>It goes without saying that you should guard your key carefully.
-Should someone gain access to your key, the data will be easily decoded.  If your server is not totally under your control
+Should someone gain access to your key, the data will be easily decoded. If your server is not totally under your control
 it's impossible to ensure key security so you may want to think carefully before using it for anything
 that requires high security, like storing credit card numbers.</p>
 
@@ -91,9 +91,9 @@
 <h2>Message Length</h2>
 
 <p>It's important for you to know that the encoded messages the encryption function generates will be approximately 2.6 times longer than the original
-message.  For example, if you encrypt the string "my super secret data", which is 21 characters in length, you'll end up
+message. For example, if you encrypt the string "my super secret data", which is 21 characters in length, you'll end up
 with an encoded string that is roughly 55 characters (we say "roughly" because the encoded string length increments in
-64 bit clusters, so it's not exactly linear).  Keep this information in mind when selecting your data storage mechanism.  Cookies,
+64 bit clusters, so it's not exactly linear). Keep this information in mind when selecting your data storage mechanism. Cookies,
 for example, can only hold 4K of information.</p>
 
 
@@ -124,7 +124,7 @@
 
 <h2>$this->encrypt->decode()</h2>
 
-<p>Decrypts an encoded string.  Example:</p>
+<p>Decrypts an encoded string. Example:</p>
 
 <code>
 $encrypted_string = 'APANtByIGI1BpVXZTJgcsAG8GZl8pdwwa84';<br />
@@ -142,9 +142,9 @@
 
 <h2>$this->encrypt->set_cipher();</h2>
 
-<p>Permits you to set an Mcrypt cipher.  By default it uses <samp>MCRYPT_RIJNDAEL_256</samp>.  Example:</p>
+<p>Permits you to set an Mcrypt cipher. By default it uses <samp>MCRYPT_RIJNDAEL_256</samp>. Example:</p>
 <code>$this->encrypt->set_cipher(MCRYPT_BLOWFISH);</code>
-<p>Please visit php.net for a list of  <a href="http://php.net/mcrypt">available ciphers</a>.</p>
+<p>Please visit php.net for a list of <a href="http://php.net/mcrypt">available ciphers</a>.</p>
 
 <p>If you'd like to manually test whether your server supports Mcrypt you can use:</p>
 <code>echo ( ! function_exists('mcrypt_encrypt')) ? 'Nope' : 'Yup';</code>
@@ -152,13 +152,13 @@
 
 <h2>$this->encrypt->set_mode();</h2>
 
-<p>Permits you to set an Mcrypt mode.  By default it uses <samp>MCRYPT_MODE_CBC</samp>.  Example:</p>
+<p>Permits you to set an Mcrypt mode. By default it uses <samp>MCRYPT_MODE_CBC</samp>. Example:</p>
 <code>$this->encrypt->set_mode(MCRYPT_MODE_CFB);</code>
-<p>Please visit php.net for a list of  <a href="http://php.net/mcrypt">available modes</a>.</p>
+<p>Please visit php.net for a list of <a href="http://php.net/mcrypt">available modes</a>.</p>
 
 
 <h2>$this->encrypt->sha1();</h2>
-<p>SHA1 encoding function.  Provide a string and it will return a 160 bit one way hash.  Note:  SHA1, just like MD5 is non-decodable. Example:</p>
+<p>SHA1 encoding function. Provide a string and it will return a 160 bit one way hash. Note: SHA1, just like MD5 is non-decodable. Example:</p>
 <code>$hash = $this->encrypt->sha1('Some string');</code>
 
 <p>Many PHP installations have SHA1 support by default so if all you need is to encode a hash it's simpler to use the native
@@ -169,12 +169,12 @@
 <p>If your server does not support SHA1 you can use the provided function.</p>
 
 <h2 id="legacy">$this->encrypt->encode_from_legacy(<kbd>$orig_data</kbd>, <kbd>$legacy_mode</kbd> = MCRYPT_MODE_ECB, <kbd>$key</kbd> = '');</h2>
-<p>Enables you to re-encode data that was originally encrypted with CodeIgniter 1.x to be compatible with the Encryption library in CodeIgniter 2.x.  It is only
-	necessary to use this method if you have encrypted data stored permanently such as in a file or database and are on a server that supports Mcrypt.  "Light" use encryption
-	such as encrypted session data or transitory encrypted flashdata require no intervention on your part.  However, existing encrypted Sessions will be
+<p>Enables you to re-encode data that was originally encrypted with CodeIgniter 1.x to be compatible with the Encryption library in CodeIgniter 2.x. It is only
+	necessary to use this method if you have encrypted data stored permanently such as in a file or database and are on a server that supports Mcrypt. "Light" use encryption
+	such as encrypted session data or transitory encrypted flashdata require no intervention on your part. However, existing encrypted Sessions will be
 	destroyed since data encrypted prior to 2.x will not be decoded.</p>
 
-<p class="important"><strong>Why only a method to re-encode the data instead of maintaining legacy methods for both encoding and decoding?</strong>  The algorithms in
+<p class="important"><strong>Why only a method to re-encode the data instead of maintaining legacy methods for both encoding and decoding?</strong> The algorithms in
 	the Encryption library have improved in CodeIgniter 2.x	both for performance and security, and we do not wish to encourage continued use of the older methods.
 	You can of course extend the Encryption library if you wish and replace the new methods with the old and retain seamless compatibility with CodeIgniter 1.x
 	encrypted data, but this a decision that a developer should make cautiously and deliberately, if at all.</p>
@@ -195,13 +195,13 @@
 <tr>
 	<td class="td"><strong>$legacy_mode</strong></td>
 	<td class="td">MCRYPT_MODE_ECB</td>
-	<td class="td">The Mcrypt mode that was used to generate the original encrypted data.  CodeIgniter 1.x's default was MCRYPT_MODE_ECB, and it will
+	<td class="td">The Mcrypt mode that was used to generate the original encrypted data. CodeIgniter 1.x's default was MCRYPT_MODE_ECB, and it will
 		assume that to be the case unless overridden by this parameter.</td>
 </tr>
 <tr>
 	<td class="td"><strong>$key</strong></td>
 	<td class="td">n/a</td>
-	<td class="td">The encryption key.  This it typically specified in your config file as outlined above.</td>
+	<td class="td">The encryption key. This it typically specified in your config file as outlined above.</td>
 </tr>
 </table>
 
diff --git a/user_guide/libraries/file_uploading.html b/user_guide/libraries/file_uploading.html
index e4e842e..a248267 100644
--- a/user_guide/libraries/file_uploading.html
+++ b/user_guide/libraries/file_uploading.html
@@ -58,7 +58,7 @@
 
 <h1>File Uploading Class</h1>
 
-<p>CodeIgniter's File Uploading Class permits files to be uploaded.  You can set various
+<p>CodeIgniter's File Uploading Class permits files to be uploaded. You can set various
 preferences, restricting the type and size of the files.</p>
 
 
@@ -80,7 +80,7 @@
 
 
 
-<p>Using a text editor, create a form called <dfn>upload_form.php</dfn>.  In it, place this code and save it to your <samp>applications/views/</samp>
+<p>Using a text editor, create a form called <dfn>upload_form.php</dfn>. In it, place this code and save it to your <samp>applications/views/</samp>
 folder:</p>
 
 
@@ -106,8 +106,8 @@
 &lt;/body>
 &lt;/html></textarea>
 
-<p>You'll notice we are using a form helper to create the opening form tag.  File uploads require a multipart form, so the helper
-creates the proper syntax for you.  You'll also notice we have an $error variable.  This is so we can show error messages in the event
+<p>You'll notice we are using a form helper to create the opening form tag. File uploads require a multipart form, so the helper
+creates the proper syntax for you. You'll also notice we have an $error variable. This is so we can show error messages in the event
 the user does something wrong.</p>
 
 
@@ -138,7 +138,7 @@
 
 <h2>The Controller</h2>
 
-<p>Using a text editor, create a controller called <dfn>upload.php</dfn>.  In it, place this code and save it to your <samp>applications/controllers/</samp>
+<p>Using a text editor, create a controller called <dfn>upload.php</dfn>. In it, place this code and save it to your <samp>applications/controllers/</samp>
 folder:</p>
 
 
@@ -162,8 +162,8 @@
 		$config['upload_path'] = './uploads/';
 		$config['allowed_types'] = 'gif|jpg|png';
 		$config['max_size']	= '100';
-		$config['max_width']  = '1024';
-		$config['max_height']  = '768';
+		$config['max_width'] = '1024';
+		$config['max_height'] = '768';
 
 		$this->load->library('upload', $config);
 
@@ -186,7 +186,7 @@
 
 <h2>The Upload Folder</h2>
 
-<p>You'll need a destination folder for your uploaded images.  Create a folder at the root of your CodeIgniter installation called
+<p>You'll need a destination folder for your uploaded images. Create a folder at the root of your CodeIgniter installation called
 <dfn>uploads</dfn> and set its file permissions to 777.</p>
 
 
@@ -215,26 +215,26 @@
 
 <h2>Setting Preferences</h2>
 
-<p>Similar to other libraries, you'll control what is allowed to be upload based on your preferences.  In the controller you
+<p>Similar to other libraries, you'll control what is allowed to be upload based on your preferences. In the controller you
 built above you set the following preferences:</p>
 
 <code>$config['upload_path'] = './uploads/';<br />
 $config['allowed_types'] = 'gif|jpg|png';<br />
 $config['max_size']	= '100';<br />
-$config['max_width']  = '1024';<br />
-$config['max_height']  = '768';<br />
+$config['max_width'] = '1024';<br />
+$config['max_height'] = '768';<br />
 <br />
 $this->load->library('upload', $config);<br /><br />
 
-// Alternately you can set preferences by calling the initialize function.  Useful if you auto-load the class:<br />
+// Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class:<br />
 $this->upload->initialize($config);</code>
 
-<p>The above preferences should be fairly self-explanatory.  Below is a table describing all available preferences.</p>
+<p>The above preferences should be fairly self-explanatory. Below is a table describing all available preferences.</p>
 
 
 <h2>Preferences</h2>
 
-<p>The following preferences are available.  The default value indicates what will be used if you do not specify that preference.</p>
+<p>The following preferences are available. The default value indicates what will be used if you do not specify that preference.</p>
 
 <table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
 <tr>
@@ -248,14 +248,14 @@
 <td class="td"><strong>upload_path</strong></td>
 <td class="td">None</td>
 <td class="td">None</td>
-<td class="td">The path to the folder where the upload should be placed.  The folder must be writable and the path can be absolute or relative.</td>
+<td class="td">The path to the folder where the upload should be placed. The folder must be writable and the path can be absolute or relative.</td>
 </tr>
 
 <tr>
 <td class="td"><strong>allowed_types</strong></td>
 <td class="td">None</td>
 <td class="td">None</td>
-<td class="td">The mime types corresponding to the types of files you allow to be uploaded.  Usually the file extension can be used as the mime type.  Separate multiple types with a pipe.</td>
+<td class="td">The mime types corresponding to the types of files you allow to be uploaded. Usually the file extension can be used as the mime type. Separate multiple types with a pipe.</td>
 </tr>
 
 
@@ -264,7 +264,7 @@
 <td class="td">None</td>
 <td class="td">Desired file name</td>
 <td class="td">
-	<p>If set CodeIgniter will rename the uploaded file to this name.  The extension provided in the file name must also be an allowed file type.</p>
+	<p>If set CodeIgniter will rename the uploaded file to this name. The extension provided in the file name must also be an allowed file type.</p>
 </td>
 </tr>
 
@@ -280,28 +280,28 @@
 <td class="td"><strong>max_size</strong></td>
 <td class="td">0</td>
 <td class="td">None</td>
-<td class="td">The maximum size (in kilobytes) that the file can be.  Set to zero for no limit. Note:  Most PHP installations have their own limit, as specified in the php.ini file.  Usually 2 MB (or 2048 KB) by default.</td>
+<td class="td">The maximum size (in kilobytes) that the file can be. Set to zero for no limit. Note: Most PHP installations have their own limit, as specified in the php.ini file. Usually 2 MB (or 2048 KB) by default.</td>
 </tr>
 
 <tr>
 <td class="td"><strong>max_width</strong></td>
 <td class="td">0</td>
 <td class="td">None</td>
-<td class="td">The maximum width (in pixels) that the file can be.  Set to zero for no limit.</td>
+<td class="td">The maximum width (in pixels) that the file can be. Set to zero for no limit.</td>
 </tr>
 
 <tr>
 <td class="td"><strong>max_height</strong></td>
 <td class="td">0</td>
 <td class="td">None</td>
-<td class="td">The maximum height (in pixels) that the file can be.  Set to zero for no limit.</td>
+<td class="td">The maximum height (in pixels) that the file can be. Set to zero for no limit.</td>
 </tr>
 
 <tr>
 <td class="td"><strong>max_filename</strong></td>
 <td class="td">0</td>
 <td class="td">None</td>
-<td class="td">The maximum length that a file name can be.  Set to zero for no limit.</td>
+<td class="td">The maximum length that a file name can be. Set to zero for no limit.</td>
 </tr>
 
 <tr>
@@ -323,7 +323,7 @@
 <h2>Setting preferences in a config file</h2>
 
 <p>If you prefer not to set preferences using the above method, you can instead put them into a config file.
-Simply create a new file called the <var>upload.php</var>,  add the <var>$config</var>
+Simply create a new file called the <var>upload.php</var>, add the <var>$config</var>
 array in that file. Then save the file in: <var>config/upload.php</var> and it will be used automatically. You
 will NOT need to use the <dfn>$this->upload->initialize</dfn> function if you save your preferences in a config file.</p>
 
@@ -335,7 +335,7 @@
 
 <h2>$this->upload->do_upload()</h2>
 
-<p>Performs the upload based on the preferences you've set.  Note:  By default the upload routine expects the file to come from a form field
+<p>Performs the upload based on the preferences you've set. Note: By default the upload routine expects the file to come from a form field
 called <dfn>userfile</dfn>, and the form must be a "multipart type:</p>
 
 <code>&lt;form method="post" action="some_action" enctype="multipart/form-data" /></code>
@@ -349,11 +349,11 @@
 
 <h2>$this->upload->display_errors()</h2>
 
-<p>Retrieves any error messages if the <dfn>do_upload()</dfn> function returned false.  The function does not echo automatically, it
+<p>Retrieves any error messages if the <dfn>do_upload()</dfn> function returned false. The function does not echo automatically, it
 returns the data so you can assign it however you need.</p>
 
 <h3>Formatting Errors</h3>
-<p>By default the above function wraps any errors within &lt;p> tags.  You can set your own delimiters like this:</p>
+<p>By default the above function wraps any errors within &lt;p> tags. You can set your own delimiters like this:</p>
 
 <code>$this->upload->display_errors('<var>&lt;p></var>', '<var>&lt;/p></var>');</code>
 
@@ -403,7 +403,7 @@
 <td class="td">The file name without the extension</td></tr>
 
 <tr><td class="td"><strong>orig_name</strong></td>
-<td class="td">The original file name.  This is only useful if you use the encrypted name option.</td></tr>
+<td class="td">The original file name. This is only useful if you use the encrypted name option.</td></tr>
 
 <tr><td class="td"><strong>client_name</strong></td>
 <td class="td">The file name as supplied by the client user agent, prior to any file name preparation or incrementing.</td></tr>
@@ -415,7 +415,7 @@
 <td class="td">The file size in kilobytes</td></tr>
 
 <tr><td class="td"><strong>is_image</strong></td>
-<td class="td">Whether the file is an image or not.  1 = image. 0 = not.</td></tr>
+<td class="td">Whether the file is an image or not. 1 = image. 0 = not.</td></tr>
 
 <tr><td class="td"><strong>image_width</strong></td>
 <td class="td">Image width.</td></tr>
@@ -424,10 +424,10 @@
 <td class="td">Image height</td></tr>
 
 <tr><td class="td"><strong>image_type</strong></td>
-<td class="td">Image type.  Typically the file extension without the period.</td></tr>
+<td class="td">Image type. Typically the file extension without the period.</td></tr>
 
 <tr><td class="td"><strong>image_size_str</strong></td>
-<td class="td">A string containing the width and height.  Useful to put into an image tag.</td></tr>
+<td class="td">A string containing the width and height. Useful to put into an image tag.</td></tr>
 
 
 </table>
diff --git a/user_guide/libraries/form_validation.html b/user_guide/libraries/form_validation.html
index 8fdcd14..54908d4 100644
--- a/user_guide/libraries/form_validation.html
+++ b/user_guide/libraries/form_validation.html
@@ -113,10 +113,10 @@
 <ol>
 <li>Check for required data.</li>
 <li>Verify that the data is of the correct type, and meets the correct criteria. For example, if a username is submitted
-it must be validated to contain only permitted characters.  It must be of a minimum length,
+it must be validated to contain only permitted characters. It must be of a minimum length,
 and not exceed a maximum length. The username can't be someone else's existing username, or perhaps even a reserved word. Etc.</li>
 <li>Sanitize the data for security.</li>
-<li>Pre-format the data if needed (Does the data need to be trimmed?  HTML encoded?  Etc.)</li>
+<li>Pre-format the data if needed (Does the data need to be trimmed? HTML encoded? Etc.)</li>
 <li>Prep the data for insertion in the database.</li>
 </ol>
 
@@ -150,7 +150,7 @@
 
 <h2>The Form</h2>
 
-<p>Using a text editor, create a form called <dfn>myform.php</dfn>.  In it, place this code and save it to your <samp>applications/views/</samp>
+<p>Using a text editor, create a form called <dfn>myform.php</dfn>. In it, place this code and save it to your <samp>applications/views/</samp>
 folder:</p>
 
 
@@ -191,7 +191,7 @@
 <h2>The Success Page</h2>
 
 
-<p>Using a text editor, create a form called <dfn>formsuccess.php</dfn>.  In it, place this code and save it to your <samp>applications/views/</samp>
+<p>Using a text editor, create a form called <dfn>formsuccess.php</dfn>. In it, place this code and save it to your <samp>applications/views/</samp>
 folder:</p>
 
 
@@ -215,7 +215,7 @@
 <a name="thecontroller"></a>
 <h2>The Controller</h2>
 
-<p>Using a text editor, create a controller called <dfn>form.php</dfn>.  In it, place this code and save it to your <samp>applications/controllers/</samp>
+<p>Using a text editor, create a controller called <dfn>form.php</dfn>. In it, place this code and save it to your <samp>applications/controllers/</samp>
 folder:</p>
 
 
@@ -248,10 +248,10 @@
 
 <code>example.com/index.php/<var>form</var>/</code>
 
-<p><dfn>If you submit the form you should simply see the form reload.  That's because you haven't set up any validation
+<p><dfn>If you submit the form you should simply see the form reload. That's because you haven't set up any validation
 rules yet.</dfn></p>
 
-<p><strong>Since you haven't told the Form Validation class to validate anything yet, it returns <kbd>FALSE</kbd> (boolean false) by default.  The <samp>run()</samp>
+<p><strong>Since you haven't told the Form Validation class to validate anything yet, it returns <kbd>FALSE</kbd> (boolean false) by default. The <samp>run()</samp>
 function only returns <kbd>TRUE</kbd> if it has successfully applied your rules without any of them failing.</strong></p>
 
 
@@ -263,8 +263,8 @@
 
 <ol>
 <li>It uses a <dfn>form helper</dfn> to create the form opening.
-Technically, this isn't necessary.  You could create the form using standard HTML.  However, the benefit of using the helper
-is that it generates the action URL for you, based on the URL in your config file.  This makes your application more portable in the event your URLs change.</li>
+Technically, this isn't necessary. You could create the form using standard HTML. However, the benefit of using the helper
+is that it generates the action URL for you, based on the URL in your config file. This makes your application more portable in the event your URLs change.</li>
 
 <li>At the top of the form you'll notice the following function call:
 <code>&lt;?php echo validation_errors(); ?&gt;</code>
@@ -341,7 +341,7 @@
 If you submit the form with all the fields populated you'll see your success page.</dfn></p>
 
 <p class="important"><strong>Note:</strong> The form fields are not yet being re-populated with the data when
-there is an error.  We'll get to that shortly.</p>
+there is an error. We'll get to that shortly.</p>
 
 
 
@@ -387,7 +387,7 @@
 <a name="cascadingrules"></a>
 <h2>Cascading Rules</h2>
 
-<p>CodeIgniter lets you pipe multiple rules together.  Let's try it. Change your rules in the third parameter of rule setting function, like this:</p>
+<p>CodeIgniter lets you pipe multiple rules together. Let's try it. Change your rules in the third parameter of rule setting function, like this:</p>
 
 <code>
 $this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');<br />
@@ -427,7 +427,7 @@
 the "xss_clean" function, which removes malicious data.</p>
 
 <p><strong>Any native PHP function that accepts one parameter can be used as a rule, like <dfn>htmlspecialchars</dfn>,
-<dfn>trim</dfn>,  <dfn>MD5</dfn>, etc.</strong></p>
+<dfn>trim</dfn>, <dfn>MD5</dfn>, etc.</strong></p>
 
 <p><strong>Note:</strong> You will generally want to use the prepping functions <strong>after</strong>
 the validation rules so if there is an error, the original data will be shown in the form.</p>
@@ -438,7 +438,7 @@
 <a name="repopulatingform"></a>
 <h2>Re-populating the form</h2>
 
-<p>Thus far we have only been dealing with errors.  It's time to repopulate the form field with the submitted data. CodeIgniter offers several helper functions
+<p>Thus far we have only been dealing with errors. It's time to repopulate the form field with the submitted data. CodeIgniter offers several helper functions
 that permit you to do this. The one you will use most commonly is:</p>
 
 <code>set_value('field name')</code>
@@ -481,13 +481,13 @@
 </textarea>
 
 
-<p><dfn>Now reload your page and submit the form so that it triggers an error.  Your form fields should now be re-populated</dfn></p>
+<p><dfn>Now reload your page and submit the form so that it triggers an error. Your form fields should now be re-populated</dfn></p>
 
 <p class="important"><strong>Note:</strong> The <a href="#functionreference">Function Reference</a> section below contains functions that
 permit you to re-populate &lt;select> menus, radio buttons, and checkboxes.</p>
 
 
-<p><strong>Important Note:</strong> If you use an array as the name of a form field, you must supply it as an array to the function.  Example:</p>
+<p><strong>Important Note:</strong> If you use an array as the name of a form field, you must supply it as an array to the function. Example:</p>
 
 <code>&lt;input type="text" name="<kbd>colors[]</kbd>" value="&lt;?php echo set_value('<kbd>colors[]</kbd>'); ?>" size="50" /></code>
 
@@ -500,16 +500,16 @@
 <a name="callbacks"></a>
 <h2>Callbacks: Your own Validation Functions</h2>
 
-<p>The validation system supports callbacks to your own validation functions.  This permits you to extend the validation class
-to meet your needs.  For example, if you need to run a database query to see if the user is choosing a unique username, you can
-create a callback function that does that.  Let's create a example of this.</p>
+<p>The validation system supports callbacks to your own validation functions. This permits you to extend the validation class
+to meet your needs. For example, if you need to run a database query to see if the user is choosing a unique username, you can
+create a callback function that does that. Let's create a example of this.</p>
 
 <p>In your controller, change the "username" rule to this:</p>
 
 <code>$this->form_validation->set_rules('username', 'Username', '<kbd>callback_username_check</kbd>');</code>
 
 
-<p>Then add a new function called <dfn>username_check</dfn> to your controller.  Here's how your controller should now look:</p>
+<p>Then add a new function called <dfn>username_check</dfn> to your controller. Here's how your controller should now look:</p>
 
 
 <textarea class="textarea" style="width:100%" cols="50" rows="44">&lt;?php
@@ -553,12 +553,12 @@
 }
 ?></textarea>
 
-<p><dfn>Reload your form and submit it with the word "test" as the username.  You can see that the form field data was passed to your
+<p><dfn>Reload your form and submit it with the word "test" as the username. You can see that the form field data was passed to your
 callback function for you to process.</dfn></p>
 
 <p><strong>To invoke a callback just put the function name in a rule, with "callback_" as the rule prefix.</strong></p>
 
-<p>You can also process the form data that is passed to your callback and return it.  If your callback returns anything other than a boolean TRUE/FALSE
+<p>You can also process the form data that is passed to your callback and return it. If your callback returns anything other than a boolean TRUE/FALSE
 it is assumed that the data is your newly processed form data.</p>
 
 
@@ -568,7 +568,7 @@
 <h2>Setting Error Messages</h2>
 
 
-<p>All of the native error messages are located in the following language file:  <dfn>language/english/form_validation_lang.php</dfn></p>
+<p>All of the native error messages are located in the following language file: <dfn>language/english/form_validation_lang.php</dfn></p>
 
 <p>To set your own custom message you can either edit that file, or use the following function:</p>
 
@@ -582,7 +582,7 @@
 
 <code>$this->form_validation->set_message('username_check')</code>
 
-<p>You can also override any error message found in the language file.  For example, to change the message for the "required" rule you will do this:</p>
+<p>You can also override any error message found in the language file. For example, to change the message for the "required" rule you will do this:</p>
 
 <code>$this->form_validation->set_message('required', 'Your custom message here');</code>
 
@@ -669,9 +669,9 @@
 &lt;input type="text" name="email" value="&lt;?php echo set_value('email'); ?>" size="50" />
 </textarea>
 
-<p>If there are no errors, nothing will be shown.  If there is an error, the message will appear.</p>
+<p>If there are no errors, nothing will be shown. If there is an error, the message will appear.</p>
 
-<p><strong>Important Note:</strong> If you use an array as the name of a form field, you must supply it as an array to the function.  Example:</p>
+<p><strong>Important Note:</strong> If you use an array as the name of a form field, you must supply it as an array to the function. Example:</p>
 
 <code>&lt;?php echo form_error('<kbd>options[size]</kbd>'); ?><br />
 &lt;input type="text" name="<kbd>options[size]</kbd>" value="&lt;?php echo set_value("<kbd>options[size]</kbd>"); ?>" size="50" />
@@ -688,8 +688,8 @@
 <a name="savingtoconfig"></a>
 <h1>Saving Sets of Validation Rules to a Config File</h1>
 
-<p>A nice feature of the Form Validation class is that it permits you to store all your validation rules for your entire application in a config file.  You
-can organize these rules into "groups".  These groups can either be loaded automatically when a matching controller/function is called, or
+<p>A nice feature of the Form Validation class is that it permits you to store all your validation rules for your entire application in a config file. You
+can organize these rules into "groups". These groups can either be loaded automatically when a matching controller/function is called, or
 you can manually call each set as needed.</p>
 
 <h3>How to save your rules</h3>
@@ -728,8 +728,8 @@
 
 <h3>Creating Sets of Rules</h3>
 
-<p>In order to organize your rules into "sets" requires that you place them into "sub arrays".  Consider the following example, showing two sets of rules.
-We've arbitrarily called these two rules "signup" and "email".  You can name your rules anything you want:</p>
+<p>In order to organize your rules into "sets" requires that you place them into "sub arrays". Consider the following example, showing two sets of rules.
+We've arbitrarily called these two rules "signup" and "email". You can name your rules anything you want:</p>
 
 
 <code>$config = array(<br />
@@ -783,7 +783,7 @@
 
 <h3>Calling a Specific Rule Group</h3>
 
-<p>In order to call a specific group you will pass its name to the <kbd>run()</kbd> function.  For example, to call the <kbd>signup</kbd> rule you will do this:</p>
+<p>In order to call a specific group you will pass its name to the <kbd>run()</kbd> function. For example, to call the <kbd>signup</kbd> rule you will do this:</p>
 
 <code>
 if ($this->form_validation->run('<kbd>signup</kbd>') == FALSE)<br />
@@ -800,8 +800,8 @@
 
 <h3>Associating a Controller Function with a Rule Group</h3>
 
-<p>An alternate (and more automatic) method of calling a rule group is to name it according to the controller class/function you intend to use it with.  For example, let's say you
-have a controller named <kbd>Member</kbd> and a function named <kbd>signup</kbd>.  Here's what your class might look like:</p>
+<p>An alternate (and more automatic) method of calling a rule group is to name it according to the controller class/function you intend to use it with. For example, let's say you
+have a controller named <kbd>Member</kbd> and a function named <kbd>signup</kbd>. Here's what your class might look like:</p>
 
 <code>
 &lt;?php<br /><br />
@@ -860,7 +860,7 @@
 <a name="arraysasfields"></a>
 <h1>Using Arrays as Field Names</h1>
 
-<p>The Form Validation class supports the use of arrays as field names.  Consider this example:</p>
+<p>The Form Validation class supports the use of arrays as field names. Consider this example:</p>
 
 <code>&lt;input type="text" name="<kbd>options[]</kbd>" value="" size="50" /></code>
 
@@ -1147,13 +1147,13 @@
 
 <h2>$this->form_validation->run();</h2>
 
-<p>Runs the validation routines.  Returns boolean TRUE on success and FALSE on failure. You can optionally pass the name of the validation
+<p>Runs the validation routines. Returns boolean TRUE on success and FALSE on failure. You can optionally pass the name of the validation
 group via the function, as described in: <a href="#savingtoconfig">Saving Groups of Validation Rules to a Config File</a>.</p>
 
 
 <h2>$this->form_validation->set_message();</h2>
 
-<p>Permits you to set custom error messages.  See <a href="#settingerrors">Setting Error Messages</a> above.</p>
+<p>Permits you to set custom error messages. See <a href="#settingerrors">Setting Error Messages</a> above.</p>
 
 
 <p>&nbsp;</p>
@@ -1161,25 +1161,25 @@
 <a name="helperreference"></a>
 <h1>Helper Reference</h1>
 
-<p>The following helper functions are available for use in the view files containing your forms.  Note that these are procedural functions, so they
+<p>The following helper functions are available for use in the view files containing your forms. Note that these are procedural functions, so they
 <strong>do not</strong> require you to prepend them with $this->form_validation.</p>
 
 <h2>form_error()</h2>
 
-<p>Shows an individual error message associated with the field name supplied to the function.  Example:</p>
+<p>Shows an individual error message associated with the field name supplied to the function. Example:</p>
 
 <code>&lt;?php echo form_error('username'); ?></code>
 
-<p>The error delimiters can be optionally specified.  See the <a href="#errordelimiters">Changing the Error Delimiters</a> section above.</p>
+<p>The error delimiters can be optionally specified. See the <a href="#errordelimiters">Changing the Error Delimiters</a> section above.</p>
 
 
 
 <h2>validation_errors()</h2>
-<p>Shows all error messages as a string:  Example:</p>
+<p>Shows all error messages as a string: Example:</p>
 
 <code>&lt;?php echo validation_errors(); ?></code>
 
-<p>The error delimiters can be optionally specified.  See the <a href="#errordelimiters">Changing the Error Delimiters</a> section above.</p>
+<p>The error delimiters can be optionally specified. See the <a href="#errordelimiters">Changing the Error Delimiters</a> section above.</p>
 
 
 
@@ -1194,7 +1194,7 @@
 
 <h2>set_select()</h2>
 
-<p>If you use a <dfn>&lt;select></dfn> menu, this function permits you to display the menu item that was selected.  The first parameter
+<p>If you use a <dfn>&lt;select></dfn> menu, this function permits you to display the menu item that was selected. The first parameter
 must contain the name of the select menu, the second parameter must contain the value of
 each item, and the third (optional) parameter lets you set an item as the default (use boolean TRUE/FALSE).</p>
 
@@ -1202,16 +1202,16 @@
 
 <code>
 &lt;select name="myselect"><br />
-&lt;option value="one" <dfn>&lt;?php echo  set_select('myselect', 'one', TRUE); ?></dfn> >One&lt;/option><br />
-&lt;option value="two" <dfn>&lt;?php echo  set_select('myselect', 'two'); ?></dfn> >Two&lt;/option><br />
-&lt;option value="three" <dfn>&lt;?php echo  set_select('myselect', 'three'); ?></dfn> >Three&lt;/option><br />
+&lt;option value="one" <dfn>&lt;?php echo set_select('myselect', 'one', TRUE); ?></dfn> >One&lt;/option><br />
+&lt;option value="two" <dfn>&lt;?php echo set_select('myselect', 'two'); ?></dfn> >Two&lt;/option><br />
+&lt;option value="three" <dfn>&lt;?php echo set_select('myselect', 'three'); ?></dfn> >Three&lt;/option><br />
 &lt;/select>
 </code>
 
 
 <h2>set_checkbox()</h2>
 
-<p>Permits you to display a checkbox in the state it was submitted.  The first parameter
+<p>Permits you to display a checkbox in the state it was submitted. The first parameter
 must contain the name of the checkbox, the second parameter must contain its value, and the third (optional) parameter lets you set an item as the default (use boolean TRUE/FALSE). Example:</p>
 
 <code>&lt;input type="checkbox" name="mycheck[]" value="1" <dfn>&lt;?php echo set_checkbox('mycheck[]', '1'); ?></dfn> /><br />
@@ -1222,8 +1222,8 @@
 
 <p>Permits you to display radio buttons in the state they were submitted. This function is identical to the <strong>set_checkbox()</strong> function above.</p>
 
-<code>&lt;input type="radio" name="myradio" value="1" <dfn>&lt;?php echo  set_radio('myradio', '1', TRUE); ?></dfn> /><br />
-&lt;input type="radio" name="myradio" value="2" <dfn>&lt;?php echo  set_radio('myradio', '2'); ?></dfn> /></code>
+<code>&lt;input type="radio" name="myradio" value="1" <dfn>&lt;?php echo set_radio('myradio', '1', TRUE); ?></dfn> /><br />
+&lt;input type="radio" name="myradio" value="2" <dfn>&lt;?php echo set_radio('myradio', '2'); ?></dfn> /></code>
 
 
 
diff --git a/user_guide/libraries/ftp.html b/user_guide/libraries/ftp.html
index 43b949a..c318bc1 100644
--- a/user_guide/libraries/ftp.html
+++ b/user_guide/libraries/ftp.html
@@ -59,7 +59,7 @@
 <h1>FTP Class</h1>
 
 <p>CodeIgniter's FTP Class permits files to be transfered to a remote server. Remote files can also be moved, renamed,
-and deleted.  The FTP class also includes a "mirroring" function that permits an entire local directory to be recreated remotely via FTP.</p>
+and deleted. The FTP class also includes a "mirroring" function that permits an entire local directory to be recreated remotely via FTP.</p>
 
 <p class="important"><strong>Note:</strong>&nbsp; SFTP and SSL FTP protocols are not supported, only standard FTP.</p>
 
@@ -74,7 +74,7 @@
 <h2>Usage Examples</h2>
 
 <p>In this example a connection is opened to the FTP server, and a local file is read and uploaded in ASCII mode. The
-file permissions are set to 755.  Note: Setting permissions requires PHP 5.</p>
+file permissions are set to 755. Note: Setting permissions requires PHP 5.</p>
 
 <code>
 $this->load->library('ftp');<br />
@@ -157,26 +157,26 @@
 <h3>Setting FTP Preferences in a Config File</h3>
 
 <p>If you prefer you can store your FTP preferences in a config file.
-Simply create a new file called the <var>ftp.php</var>,  add the <var>$config</var>
+Simply create a new file called the <var>ftp.php</var>, add the <var>$config</var>
 array in that file. Then save the file at <var>config/ftp.php</var> and it will be used automatically.</p>
 
 <h3>Available connection options:</h3>
 
 
 <ul>
-<li><strong>hostname</strong> - the FTP hostname.  Usually something like:&nbsp; <dfn>ftp.example.com</dfn></li>
+<li><strong>hostname</strong> - the FTP hostname. Usually something like:&nbsp; <dfn>ftp.example.com</dfn></li>
 <li><strong>username</strong> - the FTP username.</li>
 <li><strong>password</strong> - the FTP password.</li>
 <li><strong>port</strong> - The port number. Set to <dfn>21</dfn> by default.</li>
 <li><strong>debug</strong> - <kbd>TRUE/FALSE</kbd> (boolean). Whether to enable debugging to display error messages.</li>
-<li><strong>passive</strong> - <kbd>TRUE/FALSE</kbd> (boolean). Whether to use passive mode.  Passive is set automatically by default.</li>
+<li><strong>passive</strong> - <kbd>TRUE/FALSE</kbd> (boolean). Whether to use passive mode. Passive is set automatically by default.</li>
 </ul>
 
 
 
 <h2>$this->ftp->upload()</h2>
 
-<p>Uploads a file to your server.  You must supply the local path and the remote path, and you can optionally set the mode and permissions.
+<p>Uploads a file to your server. You must supply the local path and the remote path, and you can optionally set the mode and permissions.
 Example:</p>
 
 
@@ -190,7 +190,7 @@
 
 <h2>$this->ftp->download()</h2>
 
-<p>Downloads a file from your server.  You must supply the remote path and the local path, and you can optionally set the mode.
+<p>Downloads a file from your server. You must supply the remote path and the local path, and you can optionally set the mode.
 Example:</p>
 
 <code>$this->ftp->download('/public_html/myfile.html', '/local/path/to/myfile.html', 'ascii');</code>
@@ -202,7 +202,7 @@
 
 
 <h2>$this->ftp->rename()</h2>
-<p>Permits you to rename a file.  Supply the source file name/path and the new file name/path.</p>
+<p>Permits you to rename a file. Supply the source file name/path and the new file name/path.</p>
 
 <code>
 // Renames green.html to blue.html<br />
@@ -210,7 +210,7 @@
 </code>
 
 <h2>$this->ftp->move()</h2>
-<p>Lets you move a file.  Supply the source and destination paths:</p>
+<p>Lets you move a file. Supply the source and destination paths:</p>
 
 <code>
 // Moves blog.html from "joe" to "fred"<br />
@@ -221,7 +221,7 @@
 
 
 <h2>$this->ftp->delete_file()</h2>
-<p>Lets you delete a file.  Supply the source path with the file name.</p>
+<p>Lets you delete a file. Supply the source path with the file name.</p>
 
 <code>
 $this->ftp->delete_file('/public_html/joe/blog.html');
@@ -229,10 +229,10 @@
 
 
 <h2>$this->ftp->delete_dir()</h2>
-<p>Lets you delete a directory and everything it contains.  Supply the source path to the directory with a trailing slash.</p>
+<p>Lets you delete a directory and everything it contains. Supply the source path to the directory with a trailing slash.</p>
 
-<p class="important"><strong>Important</strong>&nbsp; Be VERY careful with this function.  It will recursively delete
-<b>everything</b> within the supplied path, including sub-folders and all files.  Make absolutely sure your path is correct.
+<p class="important"><strong>Important</strong>&nbsp; Be VERY careful with this function. It will recursively delete
+<b>everything</b> within the supplied path, including sub-folders and all files. Make absolutely sure your path is correct.
 Try using the <kbd>list_files()</kbd> function first to verify that your path is correct.</p>
 
 <code>
@@ -242,7 +242,7 @@
 
 
 <h2>$this->ftp->list_files()</h2>
-<p>Permits you to retrieve a list of files on your server returned as an <dfn>array</dfn>.  You must supply
+<p>Permits you to retrieve a list of files on your server returned as an <dfn>array</dfn>. You must supply
 the path to the desired directory.</p>
 
 <code>
@@ -255,7 +255,7 @@
 <h2>$this->ftp->mirror()</h2>
 
 <p>Recursively reads a local folder and everything it contains (including sub-folders) and creates a
-mirror via FTP based on it.  Whatever the directory structure of the original file path will be recreated on the server.
+mirror via FTP based on it. Whatever the directory structure of the original file path will be recreated on the server.
 You must supply a source path and a destination path:</p>
 
 <code>
@@ -266,7 +266,7 @@
 
 <h2>$this->ftp->mkdir()</h2>
 
-<p>Lets you create a directory on your server.  Supply the path ending in the folder name you wish to create, with a trailing slash.
+<p>Lets you create a directory on your server. Supply the path ending in the folder name you wish to create, with a trailing slash.
 Permissions can be set by passed an <kbd>octal</kbd> value in the second parameter (if you are running PHP 5).</p>
 
 <code>
@@ -277,7 +277,7 @@
 
 <h2>$this->ftp->chmod()</h2>
 
-<p>Permits you to set file permissions.  Supply the path to the file or folder you wish to alter permissions on:</p>
+<p>Permits you to set file permissions. Supply the path to the file or folder you wish to alter permissions on:</p>
 
 <code>
 // Chmod "bar" to 777<br />
@@ -288,7 +288,7 @@
 
 
 <h2>$this->ftp->close();</h2>
-<p>Closes the connection to your server.  It's recommended that you use this when you are finished uploading.</p>
+<p>Closes the connection to your server. It's recommended that you use this when you are finished uploading.</p>
 
 
 
diff --git a/user_guide/libraries/image_lib.html b/user_guide/libraries/image_lib.html
index dbf0776..e6d38fc 100644
--- a/user_guide/libraries/image_lib.html
+++ b/user_guide/libraries/image_lib.html
@@ -68,11 +68,11 @@
 <li>Image Watermarking</li>
 </ul>
 
-<p>All three major image libraries are supported:  GD/GD2, NetPBM, and ImageMagick</p>
+<p>All three major image libraries are supported: GD/GD2, NetPBM, and ImageMagick</p>
 
 <p class="important"><strong>Note:</strong> Watermarking is only available using the GD/GD2 library.
 In addition, even though other libraries are supported, GD is required in
-order for the script to calculate the image properties.  The image processing, however, will be performed with the
+order for the script to calculate the image properties. The image processing, however, will be performed with the
 library you specify.</p>
 
 
@@ -82,14 +82,14 @@
 using the <dfn>$this->load-&gt;library</dfn> function:</p>
 <code>$this->load->library('image_lib');</code>
 
-<p>Once the library is loaded it will be ready for use.  The image library object you will use to call all functions is: <dfn>$this->image_lib</dfn></p>
+<p>Once the library is loaded it will be ready for use. The image library object you will use to call all functions is: <dfn>$this->image_lib</dfn></p>
 
 
 <h2>Processing an Image</h2>
 
 <p>Regardless of the type of processing you would like to perform (resizing, cropping, rotation, or watermarking), the general process is
 identical. You will set some preferences corresponding to the action you intend to perform, then
-call one of four available processing functions.  For example, to create an image thumbnail you'll do this:</p>
+call one of four available processing functions. For example, to create an image thumbnail you'll do this:</p>
 
 <code>$config['image_library'] = 'gd2';<br />
 $config['source_image']	= '/path/to/image/mypic.jpg';<br />
@@ -106,7 +106,7 @@
 <p>The above code tells the <dfn>image_resize</dfn> function to look for an image called <em>mypic.jpg</em>
 located in the <dfn>source_image</dfn> folder, then create a thumbnail that is 75 X 50 pixels using the GD2 <dfn>image_library</dfn>.
 Since the <dfn>maintain_ratio</dfn> option is enabled, the thumb will be as close to the target <dfn>width</dfn> and
-<dfn>height</dfn> as possible while preserving the original aspect ratio.  The thumbnail will be called <em>mypic_thumb.jpg</em>
+<dfn>height</dfn> as possible while preserving the original aspect ratio. The thumbnail will be called <em>mypic_thumb.jpg</em>
 </p>
 
 <p class="important"><strong>Note:</strong> In order for the image class to be allowed to do any processing, the
@@ -126,7 +126,7 @@
 <li>$this-&gt;image_lib-&gt;clear()</li>
 </ul>
 
-<p>These functions return boolean TRUE upon success and FALSE for failure.  If they fail you can retrieve the
+<p>These functions return boolean TRUE upon success and FALSE for failure. If they fail you can retrieve the
 error message using this function:</p>
 
 <code>echo $this->image_lib->display_errors();</code>
@@ -138,7 +138,7 @@
 &nbsp;&nbsp;&nbsp;&nbsp;echo $this->image_lib->display_errors();<br />
 }</code>
 
-<p>Note:  You can optionally specify the HTML formatting to be applied to the errors, by submitting the opening/closing
+<p>Note: You can optionally specify the HTML formatting to be applied to the errors, by submitting the opening/closing
 tags in the function, like this:</p>
 
 <code>$this->image_lib->display_errors('<var>&lt;p></var>', '<var>&lt;/p></var>');</code>
@@ -146,11 +146,11 @@
 
 <h2>Preferences</h2>
 
-<p>The  preferences described below allow you to tailor the image processing to suit your needs.</p>
+<p>The preferences described below allow you to tailor the image processing to suit your needs.</p>
 
 <p>Note that not all preferences are available for every
-function.  For example, the x/y axis preferences are only available for image cropping. Likewise, the width and height
-preferences have no effect on cropping.  The "availability" column indicates which functions support a given preference.</p>
+function. For example, the x/y axis preferences are only available for image cropping. Likewise, the width and height
+preferences have no effect on cropping. The "availability" column indicates which functions support a given preference.</p>
 
 <p>Availability Legend:</p>
 
@@ -187,7 +187,7 @@
 <td class="td"><strong>library_path</strong></td>
 <td class="td">None</td>
 <td class="td">None</td>
-<td class="td">Sets the server path to your ImageMagick or NetPBM library.  If you use either of those libraries you must supply the path.</td>
+<td class="td">Sets the server path to your ImageMagick or NetPBM library. If you use either of those libraries you must supply the path.</td>
 <td class="td">R, C, X</td>
 </tr>
 
@@ -195,7 +195,7 @@
 <td class="td"><strong>source_image</strong></td>
 <td class="td">None</td>
 <td class="td">None</td>
-<td class="td">Sets the source image name/path.  The path must be a relative or absolute server path, not a URL.</td>
+<td class="td">Sets the source image name/path. The path must be a relative or absolute server path, not a URL.</td>
 <td class="td">R, C, S, W</td>
 </tr>
 
@@ -203,7 +203,7 @@
 <td class="td"><strong>dynamic_output</strong></td>
 <td class="td">FALSE</td>
 <td class="td">TRUE/FALSE (boolean)</td>
-<td class="td">Determines whether the new image file should be written to disk or generated dynamically.  Note: If you choose the dynamic setting, only one image can be shown at a time, and it can't be positioned on the page. It simply outputs the raw image dynamically to your browser, along with image headers.</td>
+<td class="td">Determines whether the new image file should be written to disk or generated dynamically. Note: If you choose the dynamic setting, only one image can be shown at a time, and it can't be positioned on the page. It simply outputs the raw image dynamically to your browser, along with image headers.</td>
 <td class="td">R, C, X, W</td>
 </tr>
 
@@ -221,7 +221,7 @@
 <td class="td"><strong>new_image</strong></td>
 <td class="td">None</td>
 <td class="td">None</td>
-<td class="td">Sets the destination image name/path.  You'll use this preference when creating an image copy. The path must be a relative or absolute server path, not a URL.</td>
+<td class="td">Sets the destination image name/path. You'll use this preference when creating an image copy. The path must be a relative or absolute server path, not a URL.</td>
 <td class="td">R, C, X, W</td>
 </tr>
 
@@ -253,7 +253,7 @@
 <td class="td"><strong>thumb_marker</strong></td>
 <td class="td">_thumb</td>
 <td class="td">None</td>
-<td class="td">Specifies the thumbnail indicator.  It will be inserted just before the file extension, so mypic.jpg would become mypic_thumb.jpg</td>
+<td class="td">Specifies the thumbnail indicator. It will be inserted just before the file extension, so mypic.jpg would become mypic_thumb.jpg</td>
 <td class="td">R</td>
 </tr>
 
@@ -281,7 +281,7 @@
 <td class="td"><strong>rotation_angle</strong></td>
 <td class="td">None</td>
 <td class="td">90, 180, 270, vrt, hor</td>
-<td class="td">Specifies the angle of rotation when rotating images.  Note that PHP rotates counter-clockwise, so a 90 degree rotation to the right must be specified as 270.</td>
+<td class="td">Specifies the angle of rotation when rotating images. Note that PHP rotates counter-clockwise, so a 90 degree rotation to the right must be specified as 270.</td>
 <td class="td">X</td>
 </tr>
 
@@ -306,7 +306,7 @@
 <h2>Setting preferences in a config file</h2>
 
 <p>If you prefer not to set preferences using the above method, you can instead put them into a config file.
-Simply create a new file called <var>image_lib.php</var>,  add the <var>$config</var>
+Simply create a new file called <var>image_lib.php</var>, add the <var>$config</var>
 array in that file. Then save the file in: <var>config/image_lib.php</var> and it will be used automatically. You
 will NOT need to use the <dfn>$this->image_lib->initialize</dfn> function if you save your preferences in a config file.</p>
 
@@ -319,7 +319,7 @@
 <p>For practical purposes there is no difference between creating a copy and creating
 a thumbnail except a thumb will have the thumbnail marker as part of the name (ie, mypic_thumb.jpg).</p>
 
-<p>All preferences listed in the table above are available for this function except these three:  rotation_angle, x_axis, and y_axis.</p>
+<p>All preferences listed in the table above are available for this function except these three: rotation_angle, x_axis, and y_axis.</p>
 
 <h3>Creating a Thumbnail</h3>
 
@@ -358,7 +358,7 @@
 <code>$config['x_axis'] = '100';<br />
 $config['y_axis'] = '40';</code>
 
-<p>All preferences listed in the table above are available for this function except these:  rotation_angle, width, height, create_thumb, new_image.</p>
+<p>All preferences listed in the table above are available for this function except these: rotation_angle, width, height, create_thumb, new_image.</p>
 
 <p>Here's an example showing how you might crop an image:</p>
 
@@ -378,8 +378,8 @@
 
 
 <p>Note: Without a visual interface it is difficult to crop images, so this function is not very useful
-unless you intend to build such an interface.  That's exactly what we did using for the photo
-gallery module in ExpressionEngine, the CMS we develop.  We added a JavaScript UI that lets the cropping
+unless you intend to build such an interface. That's exactly what we did using for the photo
+gallery module in ExpressionEngine, the CMS we develop. We added a JavaScript UI that lets the cropping
 area be selected.</p>
 
 <h2>$this->image_lib->rotate()</h2>
@@ -443,7 +443,7 @@
 
 <p>Just as with the other functions (resizing, cropping, and rotating) the general process for watermarking
 involves setting the preferences corresponding to the action you intend to perform, then
-calling the watermark function.  Here is an example:</p>
+calling the watermark function. Here is an example:</p>
 
 <code>
 $config['source_image']	= '/path/to/image/mypic.jpg';<br />
@@ -452,9 +452,9 @@
 $config['wm_font_path'] = './system/fonts/texb.ttf';<br />
 $config['wm_font_size']	= '16';<br />
 $config['wm_font_color'] = 'ffffff';<br />
-$config['wm_vrt_alignment']  = 'bottom';<br />
-$config['wm_hor_alignment']  = 'center';<br />
-$config['wm_padding']  = '20';<br />
+$config['wm_vrt_alignment'] = 'bottom';<br />
+$config['wm_hor_alignment'] = 'center';<br />
+$config['wm_padding'] = '20';<br />
 <br />
 $this->image_lib->initialize($config);
 <br />
@@ -462,7 +462,7 @@
 $this->image_lib->watermark();</code>
 
 
-<p>The above example will use a 16 pixel True Type font to create the text "Copyright 2006 - John Doe".  The watermark
+<p>The above example will use a 16 pixel True Type font to create the text "Copyright 2006 - John Doe". The watermark
 will be positioned at the bottom/center of the image, 20 pixels from the bottom of the image.</p>
 
 <p class="important"><strong>Note:</strong> In order for the image class to be allowed to do any processing, the image file must have &quot;write&quot; file permissions. For example, 777.</p>
@@ -491,14 +491,14 @@
 <td class="td"><strong>source_image</strong></td>
 <td class="td">None</td>
 <td class="td">None</td>
-<td class="td">Sets the source image name/path.  The path must be a relative or absolute server path, not a URL.</td>
+<td class="td">Sets the source image name/path. The path must be a relative or absolute server path, not a URL.</td>
 </tr>
 
 <tr>
 <td class="td"><strong>dynamic_output</strong></td>
 <td class="td">FALSE</td>
 <td class="td">TRUE/FALSE (boolean)</td>
-<td class="td">Determines whether the new image file should be written to disk or generated dynamically.  Note: If you choose the dynamic setting, only one image can be shown at a time, and it can't be positioned on the page. It simply outputs the raw image dynamically to your browser, along with image headers.</td>
+<td class="td">Determines whether the new image file should be written to disk or generated dynamically. Note: If you choose the dynamic setting, only one image can be shown at a time, and it can't be positioned on the page. It simply outputs the raw image dynamically to your browser, along with image headers.</td>
 </tr>
 
 <tr>
@@ -563,28 +563,28 @@
 <td class="td"><strong>wm_text</strong></td>
 <td class="td">None</td>
 <td class="td">None</td>
-<td class="td">The text you would like shown as the watermark.  Typically this will be a copyright notice.</td>
+<td class="td">The text you would like shown as the watermark. Typically this will be a copyright notice.</td>
 </tr>
 
 <tr>
 <td class="td"><strong>wm_font_path</strong></td>
 <td class="td">None</td>
 <td class="td">None</td>
-<td class="td">The server path to the True Type Font you would like to use.  If you do not use this option, the native GD font will be used.</td>
+<td class="td">The server path to the True Type Font you would like to use. If you do not use this option, the native GD font will be used.</td>
 </tr>
 
 <tr>
 <td class="td"><strong>wm_font_size</strong></td>
 <td class="td">16</td>
 <td class="td">None</td>
-<td class="td">The size of the text.  Note: If you are not using the True Type option above, the number is set using a range of 1 - 5.  Otherwise, you can use any valid pixel size for the font you're using.</td>
+<td class="td">The size of the text. Note: If you are not using the True Type option above, the number is set using a range of 1 - 5. Otherwise, you can use any valid pixel size for the font you're using.</td>
 </tr>
 
 <tr>
 <td class="td"><strong>wm_font_color</strong></td>
 <td class="td">ffffff</td>
 <td class="td">None</td>
-<td class="td">The font color, specified in hex.  Note, you must use the full 6 character hex value (ie, 993300), rather than the three character abbreviated version (ie fff).</td>
+<td class="td">The font color, specified in hex. Note, you must use the full 6 character hex value (ie, 993300), rather than the three character abbreviated version (ie fff).</td>
 </tr>
 
 
diff --git a/user_guide/libraries/input.html b/user_guide/libraries/input.html
index 08b8ab0..6070b6c 100644
--- a/user_guide/libraries/input.html
+++ b/user_guide/libraries/input.html
@@ -70,20 +70,20 @@
 
 <h2>Security Filtering</h2>
 
-<p>The security filtering function is called automatically when a new <a href="../general/controllers.html">controller</a> is invoked.  It does the following:</p>
+<p>The security filtering function is called automatically when a new <a href="../general/controllers.html">controller</a> is invoked. It does the following:</p>
 
 <ul>
-<li>Destroys the global GET array.  Since CodeIgniter does not utilize GET strings, there is no reason to allow it.</li>
+<li>Destroys the global GET array. Since CodeIgniter does not utilize GET strings, there is no reason to allow it.</li>
 <li>Destroys all global variables in the event register_globals is turned on.</li>
 <li>Filters the POST/COOKIE array keys, permitting only alpha-numeric (and a few other) characters.</li>
-<li>Provides XSS (Cross-site Scripting Hacks) filtering.  This can be enabled globally, or upon request.</li>
+<li>Provides XSS (Cross-site Scripting Hacks) filtering. This can be enabled globally, or upon request.</li>
 <li>Standardizes newline characters to \n</li>
 </ul>
 
 
 <h2>XSS Filtering</h2>
 
-<p>The Input class has the ability to filter input automatically to prevent cross-site scripting attacks.  If you want the filter to run automatically every time it encounters POST or COOKIE data you can enable it by opening your
+<p>The Input class has the ability to filter input automatically to prevent cross-site scripting attacks. If you want the filter to run automatically every time it encounters POST or COOKIE data you can enable it by opening your
 <kbd>application/config/config.php</kbd> file and setting this:</p>
 
 <code>$config['global_xss_filtering'] = TRUE;</code>
@@ -93,9 +93,9 @@
 
 <h2>Using POST, COOKIE, or SERVER Data</h2>
 
-<p>CodeIgniter comes with three helper functions that let you fetch POST, COOKIE or SERVER items.  The main advantage of using the provided
+<p>CodeIgniter comes with three helper functions that let you fetch POST, COOKIE or SERVER items. The main advantage of using the provided
 functions rather than fetching an item directly ($_POST['something']) is that the functions will check to see if the item is set and
-return false (boolean) if not.  This lets you conveniently use data without having to test whether an item exists first.
+return false (boolean) if not. This lets you conveniently use data without having to test whether an item exists first.
 In other words, normally you might do something like this:</p>
 
 <code>
@@ -128,7 +128,7 @@
 
 <p>The function returns FALSE (boolean) if the item you are attempting to retrieve does not exist.</p>
 
-<p>The second optional parameter lets you run the data through the XSS filter.  It's enabled by setting the second parameter to boolean TRUE;</p>
+<p>The second optional parameter lets you run the data through the XSS filter. It's enabled by setting the second parameter to boolean TRUE;</p>
 
 <code>$this->input->post('some_data', TRUE);</code>
 
@@ -179,7 +179,7 @@
 
 <h2>$this->input->set_cookie()</h2>
 
-<p>Sets a cookie containing the values you specify.  There are two ways to pass information to this function so that a cookie can be set:
+<p>Sets a cookie containing the values you specify. There are two ways to pass information to this function so that a cookie can be set:
 Array Method, and Discrete Parameters:</p>
 
 <h4>Array Method</h4>
@@ -203,10 +203,10 @@
 
 <p>Only the name and value are required. To delete a cookie set it with the expiration blank.</p>
 
-<p>The expiration is set in <strong>seconds</strong>, which will be added to the current time.  Do not include the time, but rather only the
-number of seconds from <em>now</em> that you wish the cookie to be valid.  If the expiration is set to
+<p>The expiration is set in <strong>seconds</strong>, which will be added to the current time. Do not include the time, but rather only the
+number of seconds from <em>now</em> that you wish the cookie to be valid. If the expiration is set to
 zero the cookie will only last as long as the browser is open.</p>
-<p>For site-wide cookies regardless of how your site is requested, add your URL to the <strong>domain</strong> starting with a period, like this:  .your-domain.com</p>
+<p>For site-wide cookies regardless of how your site is requested, add your URL to the <strong>domain</strong> starting with a period, like this: .your-domain.com</p>
 <p>The path is usually not needed since the function sets a root path.</p>
 <p>The prefix is only needed if you need to avoid name collisions with other identically named cookies for your server.</p>
 <p>The secure boolean is only needed if you want to make it a secure cookie by setting it to TRUE.</p>
@@ -219,25 +219,25 @@
 
 <h2>$this->input->cookie()</h2>
 
-<p>Lets you fetch a cookie.  The first parameter will contain the name of the cookie you are looking for (including any prefixes):</p>
+<p>Lets you fetch a cookie. The first parameter will contain the name of the cookie you are looking for (including any prefixes):</p>
 
 <code>cookie('some_cookie');</code>
 
 <p>The function returns FALSE (boolean) if the item you are attempting to retrieve does not exist.</p>
 
-<p>The second optional parameter lets you run the data through the XSS filter.  It's enabled by setting the second parameter to boolean TRUE;</p>
+<p>The second optional parameter lets you run the data through the XSS filter. It's enabled by setting the second parameter to boolean TRUE;</p>
 
 <p><code>cookie('some_cookie', TRUE);</code></p>
 
 
 <h2>$this->input->ip_address()</h2>
-<p>Returns the IP address for the current user.  If the IP address is not valid, the function will return an IP of: 0.0.0.0</p>
+<p>Returns the IP address for the current user. If the IP address is not valid, the function will return an IP of: 0.0.0.0</p>
 <code>echo $this->input->ip_address();</code>
 
 
 <h2>$this->input->valid_ip(<var>$ip</var>)</h2>
 
-<p>Takes an IP address as input and returns TRUE or FALSE (boolean) if it is valid or not.  Note:  The $this->input->ip_address() function above
+<p>Takes an IP address as input and returns TRUE or FALSE (boolean) if it is valid or not. Note: The $this->input->ip_address() function above
 validates the IP automatically.</p>
 
 <code>if ( ! $this-&gt;input-&gt;valid_ip($ip))<br />
@@ -256,7 +256,7 @@
 <p>See the <a href="user_agent.html">User Agent Class</a> for methods which extract information from the user agent string.</p>
 
 <h2>$this->input->request_headers()</h2>
-<p>Useful if running in a non-Apache environment where <a href="http://php.net/apache_request_headers">apache_request_headers()</a> will not be supported.  Returns an array of headers.</p>
+<p>Useful if running in a non-Apache environment where <a href="http://php.net/apache_request_headers">apache_request_headers()</a> will not be supported. Returns an array of headers.</p>
 
 <code>$headers = $this->input->request_headers();</code>
 
diff --git a/user_guide/libraries/javascript.html b/user_guide/libraries/javascript.html
index 4e26227..cd3adf1 100644
--- a/user_guide/libraries/javascript.html
+++ b/user_guide/libraries/javascript.html
@@ -65,11 +65,11 @@
 
 <code>$this-&gt;load-&gt;library('javascript');</code>
 
-<p>The Javascript class also accepts parameters, <dfn>js_library_driver (string) default 'jquery'</dfn> and <dfn>autoload (bool) default TRUE</dfn>.  You may override the defaults if you wish by sending an associative array:</p>
+<p>The Javascript class also accepts parameters, <dfn>js_library_driver (string) default 'jquery'</dfn> and <dfn>autoload (bool) default TRUE</dfn>. You may override the defaults if you wish by sending an associative array:</p>
 
 <code>$this-&gt;load-&gt;library('javascript', array('js_library_driver' =&gt; 'scripto', 'autoload' =&gt; FALSE));</code>
 
-<p>Again, presently only 'jquery' is available.  You may wish to set <dfn>autoload</dfn> to FALSE, though, if you do not want the jQuery library to automatically include a script tag for the main jQuery script file.  This is useful if you are loading it from a location outside of CodeIgniter, or already have the script tag in your markup.</p>
+<p>Again, presently only 'jquery' is available. You may wish to set <dfn>autoload</dfn> to FALSE, though, if you do not want the jQuery library to automatically include a script tag for the main jQuery script file. This is useful if you are loading it from a location outside of CodeIgniter, or already have the script tag in your markup.</p>
 
 <p>Once loaded, the jQuery library object will be available using: <dfn>$this-&gt;javascript</dfn></p>
 <h2>Setup and Configuration</h2>
@@ -93,7 +93,7 @@
 
 <code>$this-&gt;load-&gt;library('jquery');</code>
 
-<p>You may send an optional parameter to determine whether or not a script tag for the main jQuery file will be automatically included when loading the library.  It will be created by default.  To prevent this, load the library as follows:</p>
+<p>You may send an optional parameter to determine whether or not a script tag for the main jQuery file will be automatically included when loading the library. It will be created by default. To prevent this, load the library as follows:</p>
 
 <code>$this-&gt;load-&gt;library('jquery', FALSE);</code>
 
@@ -115,7 +115,7 @@
 
 <h2>Effects</h2>
 
-<p>The query library supports a powerful <a href="http://docs.jquery.com/Effects">Effects</a> repertoire.  Before an effect can be used, it must be loaded:</p>
+<p>The query library supports a powerful <a href="http://docs.jquery.com/Effects">Effects</a> repertoire. Before an effect can be used, it must be loaded:</p>
 
 <p><code>$this->jquery->effect([optional path] plugin name);
 // for example
@@ -125,8 +125,8 @@
 <h3>hide() / show()</h3>
 
 <p>Each of this functions will affect the visibility of an item on your page. hide() will set an item invisible, show() will reveal it.</p>
-<p><code>$this-&gt;jquery-&gt;hide(target,  optional speed, optional extra information);<br />
-	$this-&gt;jquery-&gt;show(target,  optional speed, optional extra information);</code></p>
+<p><code>$this-&gt;jquery-&gt;hide(target, optional speed, optional extra information);<br />
+	$this-&gt;jquery-&gt;show(target, optional speed, optional extra information);</code></p>
 
 <ul>
 	<li>&quot;target&quot; will be any valid jQuery selector or selectors.</li>
@@ -162,8 +162,8 @@
 
 <h3>fadeIn() / fadeOut()</h3>
 
-<p><code>$this-&gt;jquery-&gt;fadeIn(target,  optional speed, optional extra information);<br />
-	$this-&gt;jquery-&gt;fadeOut(target,  optional speed, optional extra information);</code></p>
+<p><code>$this-&gt;jquery-&gt;fadeIn(target, optional speed, optional extra information);<br />
+	$this-&gt;jquery-&gt;fadeOut(target, optional speed, optional extra information);</code></p>
 <ul>
 	<li>&quot;target&quot; will be any valid jQuery selector or selectors.</li>
 	<li>&quot;speed&quot; is optional, and is set to either slow, normal, fast, or alternatively a number of milliseconds.</li>
@@ -182,8 +182,8 @@
 <h3>fadeIn() / fadeOut()</h3>
 
 <p>These effects cause an element(s) to disappear or reappear over time.</p>
-<p><code>$this-&gt;jquery-&gt;fadeIn(target,  optional speed, optional extra information);<br />
-	$this-&gt;jquery-&gt;fadeOut(target,  optional speed, optional extra information);</code></p>
+<p><code>$this-&gt;jquery-&gt;fadeIn(target, optional speed, optional extra information);<br />
+	$this-&gt;jquery-&gt;fadeOut(target, optional speed, optional extra information);</code></p>
 <ul>
 	<li>&quot;target&quot; will be any valid jQuery selector or selectors.</li>
 	<li>&quot;speed&quot; is optional, and is set to either slow, normal, fast, or alternatively a number of milliseconds.</li>
@@ -193,9 +193,9 @@
 <h3>slideUp() / slideDown() / slideToggle()</h3>
 
 <p>These effects cause an element(s) to slide.</p>
-<p><code>$this-&gt;jquery-&gt;slideUp(target,  optional speed, optional extra information);<br />
-	$this-&gt;jquery-&gt;slideDown(target,  optional speed, optional extra information);<br />
-$this-&gt;jquery-&gt;slideToggle(target,  optional speed, optional extra information);</code></p>
+<p><code>$this-&gt;jquery-&gt;slideUp(target, optional speed, optional extra information);<br />
+	$this-&gt;jquery-&gt;slideDown(target, optional speed, optional extra information);<br />
+$this-&gt;jquery-&gt;slideToggle(target, optional speed, optional extra information);</code></p>
 <ul>
 	<li>&quot;target&quot; will be any valid jQuery selector or selectors.</li>
 	<li>&quot;speed&quot; is optional, and is set to either slow, normal, fast, or alternatively a number of milliseconds.</li>
diff --git a/user_guide/libraries/language.html b/user_guide/libraries/language.html
index 75863c2..1b253fa 100644
--- a/user_guide/libraries/language.html
+++ b/user_guide/libraries/language.html
@@ -60,30 +60,30 @@
 
 <p>The Language Class provides functions to retrieve language files and lines of text for purposes of internationalization.</p>
 
-<p>In your CodeIgniter system folder you'll find one called <dfn>language</dfn> containing sets of language files.  You can create
+<p>In your CodeIgniter system folder you'll find one called <dfn>language</dfn> containing sets of language files. You can create
 your own language files as needed in order to display error and other messages in other languages.</p>
 
-<p>Language files are typically stored in your <dfn>system/language</dfn> directory.  Alternately you can create a folder called <kbd>language</kbd> inside
-your <kbd>application</kbd> folder and store them there.  CodeIgniter will look first in your <dfn>application/language</dfn>
-directory.  If the directory does not exist or the specified language is not located there CI will instead look in your global
+<p>Language files are typically stored in your <dfn>system/language</dfn> directory. Alternately you can create a folder called <kbd>language</kbd> inside
+your <kbd>application</kbd> folder and store them there. CodeIgniter will look first in your <dfn>application/language</dfn>
+directory. If the directory does not exist or the specified language is not located there CI will instead look in your global
 <dfn>system/language</dfn> folder.</p>
 
-<p class="important"><strong>Note:</strong>&nbsp; Each language should be stored in its own folder.  For example, the English files are located at:
+<p class="important"><strong>Note:</strong>&nbsp; Each language should be stored in its own folder. For example, the English files are located at:
 <dfn>system/language/english</dfn></p>
 
 
 
 <h2>Creating Language Files</h2>
 
-<p>Language files must be named with <kbd>_lang.php</kbd> as the file extension.  For example, let's say you want to create a file
-containing error messages.  You might name it:  <kbd>error_lang.php</kbd></p>
+<p>Language files must be named with <kbd>_lang.php</kbd> as the file extension. For example, let's say you want to create a file
+containing error messages. You might name it: <kbd>error_lang.php</kbd></p>
 
 <p>Within the file you will assign each line of text to an array called <var>$lang</var> with this prototype:</p>
 
 <code>$lang['language_key'] = "The actual message to be shown";</code>
 
 <p><strong>Note:</strong> It's a good practice to use a common prefix for all messages in a given file to avoid collisions with
-similarly named items in other files.  For example, if you are creating error messages you might prefix them with <var>error_</var></p>
+similarly named items in other files. For example, if you are creating error messages you might prefix them with <var>error_</var></p>
 
 <code>$lang['<var>error</var>_email_missing'] = "You must submit an email address";<br />
 $lang['<var>error</var>_url_missing'] = "You must submit a URL";<br />
@@ -92,12 +92,12 @@
 
 <h2>Loading A Language File</h2>
 
-<p>In order to fetch a line from a particular file you must load the file first.  Loading a language file is done with the following code:</p>
+<p>In order to fetch a line from a particular file you must load the file first. Loading a language file is done with the following code:</p>
 
 <code>$this->lang->load('<samp>filename</samp>', '<dfn>language</dfn>');</code>
 
 <p>Where <samp>filename</samp> is the name of the file you wish to load (without the file extension), and <dfn>language</dfn>
-is the language set containing it (ie, english).  If the second parameter is missing, the default language set in your
+is the language set containing it (ie, english). If the second parameter is missing, the default language set in your
 <kbd>application/config/config.php</kbd> file will be used.</p>
 
 
@@ -109,7 +109,7 @@
 
 <p>Where <samp>language_key</samp> is the array key corresponding to the line you wish to show.</p>
 
-<p>Note: This function simply returns the line.  It does not echo it for you.</p>
+<p>Note: This function simply returns the line. It does not echo it for you.</p>
 
 <h3>Using language lines as form labels</h3>
 
diff --git a/user_guide/libraries/loader.html b/user_guide/libraries/loader.html
index 1d93af5..50ec60c 100644
--- a/user_guide/libraries/loader.html
+++ b/user_guide/libraries/loader.html
@@ -58,7 +58,7 @@
 
 <h1>Loader Class</h1>
 
-<p>Loader, as the name suggests, is used to load elements.  These elements can be libraries (classes) <a href="../general/views.html">View files</a>,
+<p>Loader, as the name suggests, is used to load elements. These elements can be libraries (classes) <a href="../general/views.html">View files</a>,
 <a href="../general/helpers.html">Helpers</a>, <a href="../general/models.html">Models</a>, or your own files.</p>
 
 <p class="important"><strong>Note:</strong> This class is initialized automatically by the system so there is no need to do it manually.</p>
@@ -69,7 +69,7 @@
 <h2>$this->load->library('<var>class_name</var>', <samp>$config</samp>, <kbd>'object name'</kbd>)</h2>
 
 
-<p>This function is used to load core classes.  Where <var>class_name</var> is the name of the class you want to load.
+<p>This function is used to load core classes. Where <var>class_name</var> is the name of the class you want to load.
 Note: We use the terms "class" and "library" interchangeably.</p>
 
 <p>For example, if you would like to send email with CodeIgniter, the first step is to load the email class within your controller:</p>
@@ -96,7 +96,7 @@
 
 <h3>Setting options</h3>
 
-<p>The second (optional) parameter allows you to optionally pass configuration setting.  You will typically pass these as an array:</p>
+<p>The second (optional) parameter allows you to optionally pass configuration setting. You will typically pass these as an array:</p>
 
 <code>
 $config = array (<br />
@@ -113,7 +113,7 @@
 
 <h3>Assigning a Library to a different object name</h3>
 
-<p>If the third (optional) parameter is blank, the library will usually be assigned to an object with the same name as the library.  For example, if the library is named <dfn>Session</dfn>, it
+<p>If the third (optional) parameter is blank, the library will usually be assigned to an object with the same name as the library. For example, if the library is named <dfn>Session</dfn>, it
 will be assigned to a variable named <dfn>$this->session</dfn>.</p>
 
 <p>If you prefer to set your own class names you can pass its value to the third parameter:</p>
@@ -131,20 +131,20 @@
 
 <h2>$this->load->view('<var>file_name</var>', <samp>$data</samp>, <kbd>true/false</kbd>)</h2>
 
-<p>This function is used to load your View files.  If you haven't read the <a href="../general/views.html">Views</a> section of the
+<p>This function is used to load your View files. If you haven't read the <a href="../general/views.html">Views</a> section of the
 user guide it is recommended that you do since it shows you how this function is typically used.</p>
 
-<p>The first parameter is required.  It is the name of the view file you would like to load. &nbsp;Note: The .php file extension does not need to be specified unless you use something other than <kbd>.php</kbd>.</p>
+<p>The first parameter is required. It is the name of the view file you would like to load. &nbsp;Note: The .php file extension does not need to be specified unless you use something other than <kbd>.php</kbd>.</p>
 
 <p>The second <strong>optional</strong> parameter can take
 an associative array or an object as input, which it runs through the PHP <a href="http://www.php.net/extract">extract</a> function to
-convert to variables that can be used in your view files.  Again, read the <a href="../general/views.html">Views</a> page to learn
+convert to variables that can be used in your view files. Again, read the <a href="../general/views.html">Views</a> page to learn
 how this might be useful.</p>
 
 <p>The third <strong>optional</strong> parameter lets you change the behavior of the function so that it returns data as a string
-rather than sending it to your browser.  This can be useful if you want to process the data in some way.  If you
-set the parameter to <kbd>true</kbd> (boolean) it will return data.  The default behavior is <kbd>false</kbd>, which sends it
-to your browser.  Remember to assign it to a variable if you want the data returned:</p>
+rather than sending it to your browser. This can be useful if you want to process the data in some way. If you
+set the parameter to <kbd>true</kbd> (boolean) it will return data. The default behavior is <kbd>false</kbd>, which sends it
+to your browser. Remember to assign it to a variable if you want the data returned:</p>
 
 <code>$string = $this->load->view('<var>myfile</var>', '', <kbd>true</kbd>);</code>
 
@@ -159,7 +159,7 @@
 <br />
 $this-&gt;<kbd>fubar</kbd>-&gt;function();</code>
 <h2>$this->load->database('<var>options</var>', <kbd>true/false</kbd>)</h2>
-<p>This function lets you load the database class.  The two parameters are <strong>optional</strong>.  Please see the
+<p>This function lets you load the database class. The two parameters are <strong>optional</strong>. Please see the
 <a href="../database/index.html">database</a> section for more info.</p>
 
 
@@ -168,9 +168,9 @@
 <h2>$this->load->vars(<samp>$array</samp>)</h2>
 
 <p>This function takes an associative array as input and generates variables using the PHP <a href="http://www.php.net/extract">extract</a> function.
-This function produces the same result as using the second parameter of the <dfn>$this->load->view()</dfn> function above.  The reason you might
+This function produces the same result as using the second parameter of the <dfn>$this->load->view()</dfn> function above. The reason you might
 want to use this function independently is if you would like to set some global variables in the constructor of your controller
-and have them become available in any view file loaded from any function.  You can have multiple calls to this function.  The data get cached
+and have them become available in any view file loaded from any function. You can have multiple calls to this function. The data get cached
 and merged into one array for conversion to variables.
 </p>
 
@@ -180,7 +180,7 @@
 
 
 <h2>$this->load->file('<var>filepath/filename</var>', <kbd>true/false</kbd>)</h2>
-<p>This is a generic file loading function.  Supply the filepath and name in the first parameter and it will open and read the file.
+<p>This is a generic file loading function. Supply the filepath and name in the first parameter and it will open and read the file.
 By default the data is sent to your browser, just like a View file, but if you set the second parameter to <kbd>true</kbd> (boolean)
 it will instead return the data as a string.</p>
 
@@ -194,7 +194,7 @@
 
 <h2>Application "Packages"</h2>
 
-<p>An application package allows for the easy distribution of complete sets of resources in a single directory, complete with its own libraries, models, helpers, config, and language files.  It is recommended that these packages be placed in the <dfn>application/third_party</dfn> folder.  Below is a sample map of an package directory</p>
+<p>An application package allows for the easy distribution of complete sets of resources in a single directory, complete with its own libraries, models, helpers, config, and language files. It is recommended that these packages be placed in the <dfn>application/third_party</dfn> folder. Below is a sample map of an package directory</p>
 
 
 <h2>Sample Package "Foo Bar" Directory Map</h2>
@@ -210,18 +210,18 @@
 models/<br />
 </code>
 
-<p>Whatever the purpose of the "Foo Bar" application package, it has its own config files, helpers, language files, libraries, and models.  To use these resources in your controllers, you first need to tell the Loader that you are going to be loading resources from a package, by adding the package path.</p>
+<p>Whatever the purpose of the "Foo Bar" application package, it has its own config files, helpers, language files, libraries, and models. To use these resources in your controllers, you first need to tell the Loader that you are going to be loading resources from a package, by adding the package path.</p>
 
 <h3>$this->load->add_package_path()</h3>
 
-<p>Adding a package path instructs the Loader class to prepend a given path for subsequent requests for resources.  As an example, the "Foo Bar" application package above has a library named <dfn>Foo_bar.php</dfn>. In our controller, we'd do the following:</p>
+<p>Adding a package path instructs the Loader class to prepend a given path for subsequent requests for resources. As an example, the "Foo Bar" application package above has a library named <dfn>Foo_bar.php</dfn>. In our controller, we'd do the following:</p>
 
 <code>$this->load->add_package_path(<var>APPPATH</var>.'third_party/<var>foo_bar</var>/');<br />
 $this->load->library('foo_bar');</code>
 
 <h3>$this->load->remove_package_path()</h3>
 
-<p>When your controller is finished using resources from an application package, and particularly if you have other application packages you want to work with, you may wish to remove the package path so the Loader no longer looks in that folder for resources.  To remove the last path added, simply call the method with no parameters.</p>
+<p>When your controller is finished using resources from an application package, and particularly if you have other application packages you want to work with, you may wish to remove the package path so the Loader no longer looks in that folder for resources. To remove the last path added, simply call the method with no parameters.</p>
 
 <h3>$this->load->remove_package_path()</h3>
 
@@ -231,8 +231,8 @@
 
 <h3>Package view files</h3>
 
-<p>By Default, package view files paths are set when <samp>add_package_path()</samp> is called.  View paths are looped through, and once a match is encountered that view is loaded.</p>
-<p>In this instance, it is possible for view naming collisions within packages to occur, and possibly the incorrect package being loaded.  To ensure against this, set an optional second parameter of <var>FALSE</var> when calling <samp>add_package_path()</samp>.</p>
+<p>By Default, package view files paths are set when <samp>add_package_path()</samp> is called. View paths are looped through, and once a match is encountered that view is loaded.</p>
+<p>In this instance, it is possible for view naming collisions within packages to occur, and possibly the incorrect package being loaded. To ensure against this, set an optional second parameter of <var>FALSE</var> when calling <samp>add_package_path()</samp>.</p>
 
 <code>
 $this->load->add_package_path(APPPATH.'my_app', TRUE);<br>
diff --git a/user_guide/libraries/output.html b/user_guide/libraries/output.html
index 4d1f8d9..8846e15 100644
--- a/user_guide/libraries/output.html
+++ b/user_guide/libraries/output.html
@@ -58,7 +58,7 @@
 
 <h1>Output Class</h1>
 
-<p>The Output class is a small class with one main function:  To send the finalized web page to the requesting browser.  It is
+<p>The Output class is a small class with one main function: To send the finalized web page to the requesting browser. It is
 also responsible for <a href="../general/caching.html">caching</a> your web pages, if you use that feature.</p>
 
 <p class="important"><strong>Note:</strong> This class is initialized automatically by the system so there is no need to do it manually.</p>
@@ -70,7 +70,7 @@
 
 <h2>$this->output->set_output();</h2>
 
-<p>Permits you to manually set the final output string.  Usage example:</p>
+<p>Permits you to manually set the final output string. Usage example:</p>
 
 <code>$this->output->set_output($data);</code>
 
@@ -95,7 +95,7 @@
 
 <h2>$this->output->get_output();</h2>
 
-<p>Permits you to manually retrieve any output that has been sent for storage in the output class.  Usage example:</p>
+<p>Permits you to manually retrieve any output that has been sent for storage in the output class. Usage example:</p>
 <code>$string = $this->output->get_output();</code>
 
 <p>Note that data will only be retrievable from this function if it has been previously sent to the output class by one of the
@@ -104,7 +104,7 @@
 
 <h2>$this->output->append_output();</h2>
 
-<p>Appends data onto the output string.  Usage example:</p>
+<p>Appends data onto the output string. Usage example:</p>
 
 <code>$this->output->append_output($data);</code>
 
@@ -112,7 +112,7 @@
 
 <h2>$this->output->set_header();</h2>
 
-<p>Permits you to manually set server headers, which the output class will send for you when outputting the final rendered display.  Example:</p>
+<p>Permits you to manually set server headers, which the output class will send for you when outputting the final rendered display. Example:</p>
 
 <code>
 $this->output->set_header("HTTP/1.0 200 OK");<br />
@@ -125,10 +125,10 @@
 
 <h2>$this->output->set_status_header(<var>code</var>, '<var>text</var>');</h2>
 
-<p>Permits you to manually set a server status header.  Example:</p>
+<p>Permits you to manually set a server status header. Example:</p>
 
 <code>$this->output->set_status_header('401');<br />
-// Sets the header as:  Unauthorized</code>
+// Sets the header as: Unauthorized</code>
 
 <p><a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">See here</a> for a full list of headers.</p>
 
@@ -147,14 +147,14 @@
 
 <h2>$this->output->set_profiler_sections();</h2>
 
-<p>Permits you to enable/disable specific sections of the Profiler when enabled.  Please refer to the <a href="../general/profiling.html">Profiler</a> documentation for further information.</p>
+<p>Permits you to enable/disable specific sections of the Profiler when enabled. Please refer to the <a href="../general/profiling.html">Profiler</a> documentation for further information.</p>
 
 <h2>$this->output->cache();</h2>
-<p>The CodeIgniter output library also controls caching.  For more information, please see the <a href="../general/caching.html">caching documentation</a>.</p>
+<p>The CodeIgniter output library also controls caching. For more information, please see the <a href="../general/caching.html">caching documentation</a>.</p>
 
 <h2>Parsing Execution Variables</h2>
 
-	<p>CodeIgniter will parse the pseudo-variables <var>{elapsed_time}</var> and <var>{memory_usage}</var> in your output by default.  To disable this, set the <var>$parse_exec_vars</var> class property to <var>FALSE</var> in your controller.
+	<p>CodeIgniter will parse the pseudo-variables <var>{elapsed_time}</var> and <var>{memory_usage}</var> in your output by default. To disable this, set the <var>$parse_exec_vars</var> class property to <var>FALSE</var> in your controller.
 
 	<code>$this->output->parse_exec_vars = FALSE;</code>
 
diff --git a/user_guide/libraries/pagination.html b/user_guide/libraries/pagination.html
index 3c366a6..a6b9287 100644
--- a/user_guide/libraries/pagination.html
+++ b/user_guide/libraries/pagination.html
@@ -72,26 +72,26 @@
 $this->load->library('pagination');<br /><br />
 $config['base_url'] = 'http://example.com/index.php/test/page/';<br />
 $config['total_rows'] = 200;<br />
-$config['per_page']  = 20;
+$config['per_page'] = 20;
 <br /><br />
 $this->pagination->initialize($config);
 
 <br /><br />
-echo  $this->pagination->create_links();</code>
+echo $this->pagination->create_links();</code>
 
 <h3>Notes:</h3>
 
-<p>The <var>$config</var> array contains your configuration variables.  It is passed to the <dfn>$this->pagination->initialize</dfn> function as shown above.  Although there are some twenty items you can configure, at
-minimum you need the three shown.  Here is a description of what those items represent:</p>
+<p>The <var>$config</var> array contains your configuration variables. It is passed to the <dfn>$this->pagination->initialize</dfn> function as shown above. Although there are some twenty items you can configure, at
+minimum you need the three shown. Here is a description of what those items represent:</p>
 
 <ul>
-	<li><strong>base_url</strong> This is the full URL to the controller class/function containing your pagination.  In the example
-	above, it is pointing to a controller called "Test" and a function called "page".  Keep in mind that you can
+	<li><strong>base_url</strong> This is the full URL to the controller class/function containing your pagination. In the example
+	above, it is pointing to a controller called "Test" and a function called "page". Keep in mind that you can
 	<a href="../general/routing.html">re-route your URI</a> if you need a different structure.</li>
 	<li><strong>total_rows</strong> This number represents the total rows in the result set you are creating pagination for.
 	Typically this number will be the total rows that your database query returned.
 	</li>
-	<li><strong>per_page</strong> The number of items you intend to show per page.  In the above example, you would be showing 20 items per page.</li>
+	<li><strong>per_page</strong> The number of items you intend to show per page. In the above example, you would be showing 20 items per page.</li>
 </ul>
 
 <p>The <var>create_links()</var> function returns an empty string when there is no pagination to show.</p>
@@ -100,7 +100,7 @@
 <h3>Setting preferences in a config file</h3>
 
 <p>If you prefer not to set preferences using the above method, you can instead put them into a config file.
-Simply create a new file called <var>pagination.php</var>,  add the <var>$config</var>
+Simply create a new file called <var>pagination.php</var>, add the <var>$config</var>
 array in that file. Then save the file in: <var>config/pagination.php</var> and it will be used automatically. You
 will NOT need to use the <dfn>$this->pagination->initialize</dfn> function if you save your preferences in a config file.</p>
 
@@ -122,9 +122,9 @@
 <h4>$config['page_query_string'] = TRUE</h4>
 <p>By default, the pagination library assume you are using <a href="../general/urls.html">URI Segments</a>, and constructs your links something like</p>
 <p><code>http://example.com/index.php/test/page/20</code></p>
-<p>If you have $config['enable_query_strings']  set to TRUE your links will automatically be re-written using Query Strings. This option can also be explictly set. Using $config['page_query_string'] set to TRUE, the pagination link will become.</p>
+<p>If you have $config['enable_query_strings'] set to TRUE your links will automatically be re-written using Query Strings. This option can also be explictly set. Using $config['page_query_string'] set to TRUE, the pagination link will become.</p>
 <p><code>http://example.com/index.php?c=test&amp;m=page&amp;per_page=20</code></p>
-<p>Note that &quot;per_page&quot; is the default query string  passed, however can be configured using $config['query_string_segment'] = 'your_string'</p>
+<p>Note that &quot;per_page&quot; is the default query string passed, however can be configured using $config['query_string_segment'] = 'your_string'</p>
 <h2>Adding Enclosing Markup</h2>
 
 <p>If you would like to surround the entire pagination with some markup you can do it with these two prefs:</p>
diff --git a/user_guide/libraries/parser.html b/user_guide/libraries/parser.html
index cb2f100..4f04aaf 100644
--- a/user_guide/libraries/parser.html
+++ b/user_guide/libraries/parser.html
@@ -83,10 +83,10 @@
 PHP from your templates (view files).</p>
 
 <p class="important"><strong>Note:</strong> CodeIgniter does <strong>not</strong> require you to use this class
-since using pure PHP in your view pages lets them run a little faster.  However, some developers prefer to use a template engine if
+since using pure PHP in your view pages lets them run a little faster. However, some developers prefer to use a template engine if
 they work with designers who they feel would find some confusion working with PHP.</p>
 
-<p><strong>Also Note:</strong> The Template Parser Class is <strong>not</strong>  a
+<p><strong>Also Note:</strong> The Template Parser Class is <strong>not</strong> a
 full-blown template parsing solution. We've kept it very lean on purpose in order to maintain maximum performance.</p>
 
 
@@ -102,7 +102,7 @@
 
 <h2>$this->parser->parse()</h2>
 
-<p>This method accepts a template name and data array as input, and it generates a parsed version.  Example:</p>
+<p>This method accepts a template name and data array as input, and it generates a parsed version. Example:</p>
 
 <code>$this->load->library('parser');<br />
 <br />
@@ -114,11 +114,11 @@
 $this->parser->parse('blog_template', $data);</code>
 
 <p>The first parameter contains the name of the <a href="../general/views.html">view file</a> (in this example the file would be called blog_template.php),
-and the second parameter contains an associative array of data to be replaced in the template.  In the above example, the
+and the second parameter contains an associative array of data to be replaced in the template. In the above example, the
 template would contain two variables: {blog_title} and {blog_heading}</p>
 
-<p>There is no need to "echo" or do something with the data returned by <dfn>$this->parser->parse()</dfn>.  It is automatically
-passed to the output class to be sent to the browser.  However, if you do want the data returned instead of sent to the output class you can
+<p>There is no need to "echo" or do something with the data returned by <dfn>$this->parser->parse()</dfn>. It is automatically
+passed to the output class to be sent to the browser. However, if you do want the data returned instead of sent to the output class you can
 pass TRUE (boolean) to the third parameter:</p>
 
 <code>$string = $this->parser->parse('blog_template', $data, TRUE);</code>
@@ -130,8 +130,8 @@
 
 <h2>Variable Pairs</h2>
 
-<p>The above example code allows simple variables to be replaced.  What if you would like an entire block of variables to be
-repeated, with each iteration containing new values?  Consider the template example we showed at the top of the page:</p>
+<p>The above example code allows simple variables to be replaced. What if you would like an entire block of variables to be
+repeated, with each iteration containing new values? Consider the template example we showed at the top of the page:</p>
 
 <code>&lt;html&gt;<br />
 &lt;head&gt;<br />
diff --git a/user_guide/libraries/security.html b/user_guide/libraries/security.html
index 7351874..0cb1d0c 100644
--- a/user_guide/libraries/security.html
+++ b/user_guide/libraries/security.html
@@ -63,11 +63,11 @@
 <h2>XSS Filtering</h2>
 
 <p>CodeIgniter comes with a Cross Site Scripting Hack prevention filter which can either run automatically to filter
-all POST and COOKIE data that is encountered, or you can run it on a per item basis.  By default it does <strong>not</strong>
+all POST and COOKIE data that is encountered, or you can run it on a per item basis. By default it does <strong>not</strong>
 run globally since it requires a bit of processing overhead, and since you may not need it in all cases.</p>
 
 <p>The XSS filter looks for commonly used techniques to trigger Javascript or other types of code that attempt to hijack cookies
-or do other malicious things.  If anything disallowed is encountered it is rendered safe by converting the data to character entities.</p>
+or do other malicious things. If anything disallowed is encountered it is rendered safe by converting the data to character entities.</p>
 
 <p>
 Note: This function should only be used to deal with data upon submission. It's not something that should be used for general runtime processing since it requires a fair amount of processing overhead.</p>
@@ -88,7 +88,7 @@
 
 <p>Note: If you use the form validation class, it gives you the option of XSS filtering as well.</p>
 
-<p>An optional second parameter, <dfn>is_image</dfn>, allows this function to be used to test images for potential XSS attacks, useful for file upload security.  When this second parameter is set to <dfn>TRUE</dfn>, instead of returning an altered string, the function returns TRUE if the image is safe, and FALSE if it contained potentially malicious information that a browser may attempt to execute.</p>
+<p>An optional second parameter, <dfn>is_image</dfn>, allows this function to be used to test images for potential XSS attacks, useful for file upload security. When this second parameter is set to <dfn>TRUE</dfn>, instead of returning an altered string, the function returns TRUE if the image is safe, and FALSE if it contained potentially malicious information that a browser may attempt to execute.</p>
 
 <code>if ($this->security->xss_clean($file, TRUE) === FALSE)<br />
 {<br />
@@ -98,7 +98,7 @@
 
 <h2>$this->security->sanitize_filename()</h2>
 
-<p>When accepting filenames from user input, it is best to sanitize them to prevent directory traversal and other security related issues.  To do so, use the <dfn>sanitize_filename()</dfn> method of the Security class.  Here is an example:</p>
+<p>When accepting filenames from user input, it is best to sanitize them to prevent directory traversal and other security related issues. To do so, use the <dfn>sanitize_filename()</dfn> method of the Security class. Here is an example:</p>
 
 <code>$filename = $this->security->sanitize_filename($this->input->post('filename'));</code>
 
diff --git a/user_guide/libraries/sessions.html b/user_guide/libraries/sessions.html
index a6f3c60..bb8f1fc 100644
--- a/user_guide/libraries/sessions.html
+++ b/user_guide/libraries/sessions.html
@@ -61,7 +61,7 @@
 <p>The Session class permits you maintain a user's "state" and track their activity while they browse your site.
 The Session class stores session information for each user as serialized (and optionally encrypted) data in a cookie.
 It can also store the session data in a database table for added security, as this permits the session ID in the
-user's cookie to be matched against the stored session ID. By default only the cookie is saved.  If you choose to
+user's cookie to be matched against the stored session ID. By default only the cookie is saved. If you choose to
 use the database option you'll need to create the session table as indicated below.
 </p>
 
@@ -93,8 +93,8 @@
 If sessions data does <strong>not</strong> exist (or if it has expired) a new session will be created and saved in the cookie.
 If a session does exist, its information will be updated and the cookie will be updated. With each update, the session_id will be regenerated.</p>
 
-<p>It's important for you to understand that once initialized, the Session class runs automatically.  There is nothing
-you need to do to cause the above behavior to happen.  You can, as you'll see below, work with session data or
+<p>It's important for you to understand that once initialized, the Session class runs automatically. There is nothing
+you need to do to cause the above behavior to happen. You can, as you'll see below, work with session data or
 even add your own data to a user's session, but the process of reading, writing, and updating a session is automatic.</p>
 
 
@@ -106,7 +106,7 @@
 <li>The user's unique Session ID (this is a statistically random string with very strong entropy, hashed with MD5 for portability, and regenerated (by default) every five minutes)</li>
 <li>The user's IP Address</li>
 <li>The user's User Agent data (the first 50 characters of the browser data string)</li>
-<li>The "last activity"  time stamp.</li>
+<li>The "last activity" time stamp.</li>
 </ul>
 
 <p>The above data is stored in a cookie as a serialized array with this prototype:</p>
@@ -124,7 +124,7 @@
 can be <a href="encryption.html">found here</a>, although the Session class will take care of initializing
 and encrypting the data automatically.</p>
 
-<p>Note: Session cookies are only updated every five minutes by default to reduce processor load.  If you repeatedly reload a page
+<p>Note: Session cookies are only updated every five minutes by default to reduce processor load. If you repeatedly reload a page
 you'll notice that the "last activity" time only updates if five minutes or more has passed since the last time
 the cookie was written. This time is configurable by changing the $config['sess_time_to_update'] line in your system/config/config.php file.</p>
 
@@ -134,7 +134,7 @@
 
 <code>$this->session->userdata('<samp>item</samp>');</code>
 
-<p>Where <samp>item</samp> is the array index corresponding to the item you wish to fetch.  For example, to fetch the session ID you
+<p>Where <samp>item</samp> is the array index corresponding to the item you wish to fetch. For example, to fetch the session ID you
 will do this:</p>
 
 <code>$session_id = $this->session->userdata('<samp>session_id</samp>');</code>
@@ -145,7 +145,7 @@
 <h2>Adding Custom Session Data</h2>
 
 <p>A useful aspect of the session array is that you can add your own data to it and it will be stored in the user's cookie.
-Why would you want to do this?  Here's one example:</p>
+Why would you want to do this? Here's one example:</p>
 
 <p>Let's say a particular user logs into your site. Once authenticated,
 you could add their username and email address to the session cookie, making that data globally available to you without
@@ -155,7 +155,7 @@
 
 <code>$this->session->set_userdata(<samp>$array</samp>);</code>
 
-<p>Where <samp>$array</samp> is an associative array containing your new data.  Here's an example:</p>
+<p>Where <samp>$array</samp> is an associative array containing your new data. Here's an example:</p>
 
 
 <p><code>$newdata = array(<br />
@@ -167,7 +167,7 @@
 	$this->session->set_userdata(<samp>$newdata</samp>);</code></p>
 <p>If you want to add userdata one value at a time, set_userdata() also supports this syntax. </p>
 <p><code>$this-&gt;session-&gt;set_userdata('some_name', 'some_value');</code></p>
-<p class="important"><strong>Note:</strong> Cookies can only hold 4KB of data, so be careful not to exceed the capacity.  The
+<p class="important"><strong>Note:</strong> Cookies can only hold 4KB of data, so be careful not to exceed the capacity. The
 encryption process in particular produces a longer data string than the original so keep careful track of how much data you are storing.</p>
 
 <h2>Retrieving All Session Data</h2>
@@ -179,10 +179,10 @@
 <pre>
 Array
 (
-    [session_id] => 4a5a5dca22728fb0a84364eeb405b601
-    [ip_address] => 127.0.0.1
-    [user_agent] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7;
-    [last_activity] => 1303142623
+  [session_id] => 4a5a5dca22728fb0a84364eeb405b601
+  [ip_address] => 127.0.0.1
+  [user_agent] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7;
+  [last_activity] => 1303142623
 )
 </pre>
 
@@ -206,20 +206,20 @@
 <p><code>$this-&gt;session-&gt;keep_flashdata('item');</code></p>
 <h2>Saving Session Data to a Database</h2>
 <p>While the session data array stored in the user's cookie contains a Session ID,
-unless you store session data in a database there is no way to validate it.  For some applications that require little or no
-security, session ID validation may not be needed, but if your application requires security, validation is mandatory.  Otherwise, an old session
+unless you store session data in a database there is no way to validate it. For some applications that require little or no
+security, session ID validation may not be needed, but if your application requires security, validation is mandatory. Otherwise, an old session
 could be restored by a user modifying their cookies.</p>
 
 <p>When session data is available in a database, every time a valid session is found in the user's cookie, a database
-query is performed to match it.  If the session ID does not match, the session is destroyed.  Session IDs can never
+query is performed to match it. If the session ID does not match, the session is destroyed. Session IDs can never
 be updated, they can only be generated when a new session is created.</p>
 
 
-<p>In order to store sessions, you must first create a database table for this purpose.  Here is the basic
+<p>In order to store sessions, you must first create a database table for this purpose. Here is the basic
 prototype (for MySQL) required by the session class:</p>
 
 <textarea class="textarea" style="width:100%" cols="50" rows="10">
-CREATE TABLE IF NOT EXISTS  `ci_sessions` (
+CREATE TABLE IF NOT EXISTS `ci_sessions` (
 	session_id varchar(40) DEFAULT '0' NOT NULL,
 	ip_address varchar(16) DEFAULT '0' NOT NULL,
 	user_agent varchar(120) NOT NULL,
@@ -249,7 +249,7 @@
 <h2>Destroying a Session </h2>
 <p>To clear the current session: </p>
 <code>$this-&gt;session-&gt;sess_destroy();</code>
-<p class="important"><strong>Note:</strong> This function should be the last one called, and even flash variables will no longer be available.  If you only want some items destroyed and not all, use <dfn>unset_userdata()</dfn>.</p>
+<p class="important"><strong>Note:</strong> This function should be the last one called, and even flash variables will no longer be available. If you only want some items destroyed and not all, use <dfn>unset_userdata()</dfn>.</p>
 
 
 
@@ -292,7 +292,7 @@
 	<td class="td"><strong>sess_use_database</strong></td>
 	<td class="td">FALSE</td>
 	<td class="td">TRUE/FALSE (boolean)</td>
-	<td class="td">Whether to save the session data to a database.  You must create the table before enabling this option.</td>
+	<td class="td">Whether to save the session data to a database. You must create the table before enabling this option.</td>
 </tr>
 <tr>
 	<td class="td"><strong>sess_table_name</strong></td>
@@ -310,7 +310,7 @@
 	<td class="td"><strong>sess_match_ip</strong></td>
 	<td class="td">FALSE</td>
 	<td class="td">TRUE/FALSE (boolean)</td>
-	<td class="td">Whether to match the user's IP address when reading the session data.  Note that some ISPs dynamically
+	<td class="td">Whether to match the user's IP address when reading the session data. Note that some ISPs dynamically
 	changes the IP, so if you want a non-expiring session you will likely set this to FALSE.</td>
 </tr>
 <tr>
diff --git a/user_guide/libraries/table.html b/user_guide/libraries/table.html
index eeb3b42..a08f950 100644
--- a/user_guide/libraries/table.html
+++ b/user_guide/libraries/table.html
@@ -130,11 +130,11 @@
 
 <h2>Changing the Look of Your Table</h2>
 
-<p>The Table Class permits you to set a table template with which you can specify the design of your layout.  Here is the template
+<p>The Table Class permits you to set a table template with which you can specify the design of your layout. Here is the template
 prototype:</p>
 
 <code>
-$tmpl =  array (<br />
+$tmpl = array (<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'table_open'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> '&lt;table border="0" cellpadding="4" cellspacing="0">',<br />
 <br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'heading_row_start'&nbsp;&nbsp;&nbsp;=> '&lt;tr>',<br />
@@ -159,14 +159,14 @@
 $this->table->set_template($tmpl);
 </code>
 
-<p class="important"><strong>Note:</strong>&nbsp; You'll notice there are two sets of "row" blocks in the template.  These permit you to create alternating row colors or design elements that alternate with each
+<p class="important"><strong>Note:</strong>&nbsp; You'll notice there are two sets of "row" blocks in the template. These permit you to create alternating row colors or design elements that alternate with each
 iteration of the row data.</p>
 
-<p>You are NOT required to submit a complete template.  If you only need to change parts of the layout you can simply submit those elements.
+<p>You are NOT required to submit a complete template. If you only need to change parts of the layout you can simply submit those elements.
 In this example, only the table opening tag is being changed:</p>
 
 <code>
-$tmpl =  array ( 'table_open'&nbsp;&nbsp;=> '&lt;table border="1" cellpadding="2" cellspacing="1" class="mytable">' );<br />
+$tmpl = array ( 'table_open'&nbsp;&nbsp;=> '&lt;table border="1" cellpadding="2" cellspacing="1" class="mytable">' );<br />
 
 <br />
 $this->table->set_template($tmpl);
@@ -176,7 +176,7 @@
 <h1>Function Reference</h1>
 
 <h2>$this->table->generate()</h2>
-<p>Returns a string containing the generated table.  Accepts an optional parameter which can be an array or a database result object.</p>
+<p>Returns a string containing the generated table. Accepts an optional parameter which can be an array or a database result object.</p>
 
 <h2>$this->table->set_caption()</h2>
 
@@ -186,19 +186,19 @@
 
 <h2>$this->table->set_heading()</h2>
 
-<p>Permits you to set the table heading.  You can submit an array or discrete params:</p>
+<p>Permits you to set the table heading. You can submit an array or discrete params:</p>
 
 <code>$this->table->set_heading('Name', 'Color', 'Size');</code>
 <code>$this->table->set_heading(array('Name', 'Color', 'Size'));</code>
 
 <h2>$this->table->add_row()</h2>
 
-<p>Permits you to add a row to your table.  You can submit an array or discrete params:</p>
+<p>Permits you to add a row to your table. You can submit an array or discrete params:</p>
 
 <code>$this->table->add_row('Blue', 'Red', 'Green');</code>
 <code>$this->table->add_row(array('Blue', 'Red', 'Green'));</code>
 
-<p>If you would like to set an individual cell's tag attributes, you can use an associative array for that cell.  The associative key <dfn>'data'</dfn> defines the cell's data.  Any other key =&gt; val pairs are added as <dfn>key='val'</dfn> attributes to the tag:</p>
+<p>If you would like to set an individual cell's tag attributes, you can use an associative array for that cell. The associative key <dfn>'data'</dfn> defines the cell's data. Any other key =&gt; val pairs are added as <dfn>key='val'</dfn> attributes to the tag:</p>
 
 <code>$cell = array('data' => 'Blue', 'class' => 'highlight', 'colspan' => 2);<br />
 $this->table->add_row($cell, 'Red', 'Green');<br />
@@ -211,8 +211,8 @@
 
 <p>This function takes a one-dimensional array as input and creates
 a multi-dimensional array with a depth equal to the number of
-columns desired.  This allows a single array with many elements to  be
-displayed in a table that has a fixed column count.  Consider this example:</p>
+columns desired. This allows a single array with many elements to be
+displayed in a table that has a fixed column count. Consider this example:</p>
 
 <code>
 $list = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve');<br />
@@ -241,7 +241,7 @@
 <p>Permits you to set your template. You can submit a full or partial template.</p>
 
 <code>
-$tmpl =  array ( 'table_open'&nbsp;&nbsp;=> '&lt;table border="1" cellpadding="2" cellspacing="1" class="mytable">' );<br />
+$tmpl = array ( 'table_open'&nbsp;&nbsp;=> '&lt;table border="1" cellpadding="2" cellspacing="1" class="mytable">' );<br />
 
 <br />
 $this->table->set_template($tmpl);
@@ -250,7 +250,7 @@
 
 <h2>$this->table->set_empty()</h2>
 
-<p>Let's you set a default value for use in any table cells that are empty.  You might, for example, set a non-breaking space:</p>
+<p>Let's you set a default value for use in any table cells that are empty. You might, for example, set a non-breaking space:</p>
 
 <code>
 $this->table->set_empty("&amp;nbsp;");
@@ -258,7 +258,7 @@
 
 <h2>$this->table->clear()</h2>
 
-<p>Lets you clear the table heading and row data.  If you need to show multiple tables with different data you should
+<p>Lets you clear the table heading and row data. If you need to show multiple tables with different data you should
 to call this function after each table has been generated to empty the previous table information. Example:</p>
 
 <code>
diff --git a/user_guide/libraries/trackback.html b/user_guide/libraries/trackback.html
index 7f89b4f..4f5ca6c 100644
--- a/user_guide/libraries/trackback.html
+++ b/user_guide/libraries/trackback.html
@@ -101,29 +101,29 @@
 <li><strong>ping_url</strong> - The URL of the site you are sending the Trackback to. You can send Trackbacks to multiple URLs by separating each URL with a comma.</li>
 <li><strong>url</strong> - The URL to YOUR site where the weblog entry can be seen.</li>
 <li><strong>title</strong> - The title of your weblog entry.</li>
-<li><strong>excerpt</strong> - The content of your weblog entry. Note: the Trackback class will automatically send only the first 500 characters of your entry.  It will also strip all HTML.</li>
+<li><strong>excerpt</strong> - The content of your weblog entry. Note: the Trackback class will automatically send only the first 500 characters of your entry. It will also strip all HTML.</li>
 <li><strong>blog_name</strong> - The name of your weblog.</li>
-<li><strong>charset</strong> - The character encoding your weblog is written in.  If omitted, UTF-8 will be used.</li>
+<li><strong>charset</strong> - The character encoding your weblog is written in. If omitted, UTF-8 will be used.</li>
 </ul>
 
-<p>The Trackback sending function returns TRUE/FALSE (boolean) on success or failure.  If it fails, you can retrieve the error message using:</p>
+<p>The Trackback sending function returns TRUE/FALSE (boolean) on success or failure. If it fails, you can retrieve the error message using:</p>
 
 <code>$this->trackback->display_errors();</code>
 
 
 <h2>Receiving Trackbacks</h2>
 
-<p>Before you can receive Trackbacks you must create a weblog.  If you don't have a blog yet there's no point in continuing.</p>
+<p>Before you can receive Trackbacks you must create a weblog. If you don't have a blog yet there's no point in continuing.</p>
 
 <p>Receiving Trackbacks is a little more complex than sending them, only because you will need a database table in which to store them,
-and you will need to validate the incoming trackback data.  You are encouraged to implement a thorough validation process to
-guard against spam and duplicate data.  You may also want to limit the number of Trackbacks you allow from a particular IP within
-a given span of time to further curtail spam.  The process of receiving a Trackback is quite simple;
+and you will need to validate the incoming trackback data. You are encouraged to implement a thorough validation process to
+guard against spam and duplicate data. You may also want to limit the number of Trackbacks you allow from a particular IP within
+a given span of time to further curtail spam. The process of receiving a Trackback is quite simple;
 the validation is what takes most of the effort.</p>
 
 <h2>Your Ping URL</h2>
 
-<p>In order to accept Trackbacks you must display a Trackback URL next to each one of your weblog entries.  This will be the URL
+<p>In order to accept Trackbacks you must display a Trackback URL next to each one of your weblog entries. This will be the URL
 that people will use to send you Trackbacks (we will refer to this as your "Ping URL").</p>
 
 <p>Your Ping URL must point to a controller function where your Trackback receiving code is located, and the URL
@@ -140,7 +140,7 @@
 
 <h2>Creating a Trackback Table</h2>
 
-<p>Before you can receive Trackbacks you must create a table in which to store them.  Here is a basic prototype for such a table:</p>
+<p>Before you can receive Trackbacks you must create a table in which to store them. Here is a basic prototype for such a table:</p>
 
 <textarea class="textarea" style="width:100%" cols="50" rows="13">
 CREATE TABLE trackbacks (
@@ -162,7 +162,7 @@
 
 <h2>Processing a Trackback</h2>
 
-<p>Here is an example showing how you will receive and process a Trackback.  The following
+<p>Here is an example showing how you will receive and process a Trackback. The following
 code is intended for use within the controller function where you expect to receive Trackbacks.</p>
 
 <code>$this->load->library('trackback');<br />
@@ -196,7 +196,7 @@
 
 <h4>Notes:</h4>
 
-<p>The entry ID number is expected in the third segment of your URL.  This is based on the URI example we gave earlier:</p>
+<p>The entry ID number is expected in the third segment of your URL. This is based on the URI example we gave earlier:</p>
 
 <code>http://example.com/index.php/trackback/receive/<samp>entry_id</samp></code>
 
@@ -204,12 +204,12 @@
 
 <code>$this->uri->segment(3);</code>
 
-<p>In our Trackback receiving code above, if the third segment is missing, we will issue an error.  Without a valid entry ID, there's no
+<p>In our Trackback receiving code above, if the third segment is missing, we will issue an error. Without a valid entry ID, there's no
 reason to continue.</p>
 
 <p>The <dfn>$this->trackback->receive()</dfn> function is simply a validation function that looks at the incoming data
 and makes sure it contains the four pieces of data that are required (url, title, excerpt, blog_name).
-It returns TRUE on success and FALSE on failure.  If it fails you will issue an error message.</p>
+It returns TRUE on success and FALSE on failure. If it fails you will issue an error message.</p>
 
 <p>The incoming Trackback data can be retrieved using this function:</p>
 
diff --git a/user_guide/libraries/typography.html b/user_guide/libraries/typography.html
index 895e76f..333f77a 100644
--- a/user_guide/libraries/typography.html
+++ b/user_guide/libraries/typography.html
@@ -71,7 +71,7 @@
 
 <h2>auto_typography()</h2>
 
-<p>Formats text so that it is semantically and typographically correct HTML.  Takes a string as input and returns it with
+<p>Formats text so that it is semantically and typographically correct HTML. Takes a string as input and returns it with
 the following formatting:</p>
 
 <ul>
@@ -133,7 +133,7 @@
 <h2>protect_braced_quotes</h2>
 
 <p>When using the Typography library in conjunction with the Template Parser library it can often be desirable to protect single
-	and double quotes within curly braces.  To enable this, set the <kbd>protect_braced_quotes</kbd> class property to <samp>TRUE</samp>.</p>
+	and double quotes within curly braces. To enable this, set the <kbd>protect_braced_quotes</kbd> class property to <samp>TRUE</samp>.</p>
 
 <p>Usage example:</p>
 
diff --git a/user_guide/libraries/unit_testing.html b/user_guide/libraries/unit_testing.html
index 5e0c4c1..a430512 100644
--- a/user_guide/libraries/unit_testing.html
+++ b/user_guide/libraries/unit_testing.html
@@ -92,7 +92,7 @@
 <br />
 $this->unit->run($test, $expected_result, $test_name);</code>
 
-<p>The expected result you supply can either be a literal match, or a data type match.  Here's an example of a literal:</p>
+<p>The expected result you supply can either be a literal match, or a data type match. Here's an example of a literal:</p>
 
 <code>$this->unit->run('Foo', 'Foo');</code>
 
@@ -100,8 +100,8 @@
 
 <code>$this->unit->run('Foo', 'is_string');</code>
 
-<p>Notice the use of "is_string" in the second parameter?  This tells the function to evaluate whether your test is producing a string
-as the result.  Here is a list of allowed comparison types:</p>
+<p>Notice the use of "is_string" in the second parameter? This tells the function to evaluate whether your test is producing a string
+as the result. Here is a list of allowed comparison types:</p>
 
 <ul>
 <li>is_object</li>
@@ -129,18 +129,18 @@
 
 <code>echo $this->unit->report();</code>
 
-<p>The report will be formatted in an HTML table for viewing.  If you prefer the raw data you can retrieve an array using:</p>
+<p>The report will be formatted in an HTML table for viewing. If you prefer the raw data you can retrieve an array using:</p>
 
 <code>echo $this->unit->result();</code>
 
 
 <h2>Strict Mode</h2>
 
-<p>By default the unit test class evaluates literal matches loosely.  Consider this example:</p>
+<p>By default the unit test class evaluates literal matches loosely. Consider this example:</p>
 
 <code>$this->unit->run(1, TRUE);</code>
 
-<p>The test is evaluating an integer, but the expected result is a boolean.  PHP, however, due to it's loose data-typing
+<p>The test is evaluating an integer, but the expected result is a boolean. PHP, however, due to it's loose data-typing
 will evaluate the above code as TRUE using a normal equality test:</p>
 
 <code>if (1 == TRUE) echo 'This evaluates as true';</code>
@@ -184,8 +184,8 @@
 
 <h3>Creating a Template</h3>
 
-<p>If you would like your test results formatted differently then the default you can set your own template.  Here is an
-example of a simple template.  Note the required pseudo-variables:</p>
+<p>If you would like your test results formatted differently then the default you can set your own template. Here is an
+example of a simple template. Note the required pseudo-variables:</p>
 
 <code>
 $str = '<br />
diff --git a/user_guide/libraries/uri.html b/user_guide/libraries/uri.html
index e4e0f9d..884f4b9 100644
--- a/user_guide/libraries/uri.html
+++ b/user_guide/libraries/uri.html
@@ -106,7 +106,7 @@
 <h2>$this->uri->slash_segment(<var>n</var>)</h2>
 
 <p>This function is almost identical to <dfn>$this->uri->segment()</dfn>, except it adds a trailing and/or leading slash based on the second
-parameter.  If the parameter is not used, a trailing slash added.  Examples:</p>
+parameter. If the parameter is not used, a trailing slash added. Examples:</p>
 
 <code>$this->uri->slash_segment(<var>3</var>);<br />
 $this->uri->slash_segment(<var>3</var>, 'leading');<br />
@@ -130,7 +130,7 @@
 
 <h2>$this->uri->uri_to_assoc(<var>n</var>)</h2>
 
-<p>This function lets you turn URI segments into and associative array of key/value pairs.  Consider this URI:</p>
+<p>This function lets you turn URI segments into and associative array of key/value pairs. Consider this URI:</p>
 
 <code>index.php/user/search/name/joe/location/UK/gender/male</code>
 
@@ -143,7 +143,7 @@
 &nbsp;&nbsp;&nbsp;&nbsp;'gender'	=> 'male'<br />
 )</code>
 
-<p>The first parameter of the function lets you set an offset.  By default it is set to <kbd>3</kbd> since your
+<p>The first parameter of the function lets you set an offset. By default it is set to <kbd>3</kbd> since your
 URI will normally contain a controller/function in the first and second segments. Example:</p>
 
 <code>
@@ -173,19 +173,19 @@
 
 <h2>$this->uri->assoc_to_uri()</h2>
 
-<p>Takes an associative array as input and generates a URI string from it.  The array keys will be included in the string.  Example:</p>
+<p>Takes an associative array as input and generates a URI string from it. The array keys will be included in the string. Example:</p>
 
 <code>$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');<br />
 <br />
 $str = $this->uri->assoc_to_uri($array);<br />
 <br />
-// Produces:  product/shoes/size/large/color/red
+// Produces: product/shoes/size/large/color/red
 </code>
 
 
 <h2>$this->uri->uri_string()</h2>
 
-<p>Returns a string with the complete URI.  For example, if this is your full URL:</p>
+<p>Returns a string with the complete URI. For example, if this is your full URL:</p>
 
 <code>http://example.com/index.php/news/local/345</code>
 
@@ -215,7 +215,7 @@
 
 <h2>$this->uri->segment_array()</h2>
 
-<p>Returns an array containing the URI segments.  For example:</p>
+<p>Returns an array containing the URI segments. For example:</p>
 
 <code>
 $segs = $this->uri->segment_array();<br />
diff --git a/user_guide/libraries/user_agent.html b/user_guide/libraries/user_agent.html
index 24e8071..6b23102 100644
--- a/user_guide/libraries/user_agent.html
+++ b/user_guide/libraries/user_agent.html
@@ -70,13 +70,13 @@
 
 <h2>User Agent Definitions</h2>
 
-<p>The user agent name definitions are located in a config file located at: <dfn>application/config/user_agents.php</dfn>.  You may add items to the
+<p>The user agent name definitions are located in a config file located at: <dfn>application/config/user_agents.php</dfn>. You may add items to the
 various user agent arrays if needed.</p>
 
 <h2>Example</h2>
 
 <p>When the User Agent class is initialized it will attempt to determine whether the user agent browsing your site is
-a web browser, a mobile device, or a robot.  It will also gather the platform information if it is available.</p>
+a web browser, a mobile device, or a robot. It will also gather the platform information if it is available.</p>
 
 
 <code>
@@ -84,7 +84,7 @@
 <br />
 if ($this->agent->is_browser())<br />
 {<br />
-&nbsp;&nbsp;&nbsp;&nbsp;$agent  = $this->agent->browser().' '.$this->agent->version();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;$agent = $this->agent->browser().' '.$this->agent->version();<br />
 }<br />
 elseif ($this->agent->is_robot())<br />
 {<br />
@@ -143,7 +143,7 @@
 <p>Returns TRUE/FALSE (boolean) if the user agent is a known robot.</p>
 
 <p class="important"><strong>Note:</strong>&nbsp; The user agent library only contains the most common robot
-definitions.  It is not a complete list of bots. There are hundreds of them so searching for each one would not be
+definitions. It is not a complete list of bots. There are hundreds of them so searching for each one would not be
 very efficient. If you find that some bots that commonly visit your site are missing from the list you can add them to your
 <dfn>application/config/user_agents.php</dfn> file.</p>
 
@@ -176,7 +176,7 @@
 
 
 <h2>$this->agent->agent_string()</h2>
-<p>Returns a string containing the full user agent string.  Typically it will be something like this:</p>
+<p>Returns a string containing the full user agent string. Typically it will be something like this:</p>
 
 <code>Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2</code>
 
diff --git a/user_guide/libraries/xmlrpc.html b/user_guide/libraries/xmlrpc.html
index 5ba8513..f7aa6fe 100644
--- a/user_guide/libraries/xmlrpc.html
+++ b/user_guide/libraries/xmlrpc.html
@@ -67,11 +67,11 @@
 
 <p>Quite simply it is a way for two computers to communicate over the internet using XML.
 One computer, which we will call the <dfn>client</dfn>, sends an XML-RPC <strong>request</strong> to
-another computer, which we will call the <dfn>server</dfn>.  Once the server receives and processes the request it
+another computer, which we will call the <dfn>server</dfn>. Once the server receives and processes the request it
 will send back a <strong>response</strong> to the client.</p>
 
 <p>For example, using the MetaWeblog API, an XML-RPC Client (usually a desktop publishing tool) will
-send a request to an XML-RPC Server running on your site.  This request might be a new weblog entry
+send a request to an XML-RPC Server running on your site. This request might be a new weblog entry
 being sent for publication, or it could be a request for an existing entry for editing.
 
 When the XML-RPC Server receives this request it will examine it to determine which class/method should be called to process the request.
@@ -127,16 +127,16 @@
 
 <h3>Explanation</h3>
 
-<p>The above code initializes the XML-RPC class, sets the server URL and method to be called (weblogUpdates.ping).  The
+<p>The above code initializes the XML-RPC class, sets the server URL and method to be called (weblogUpdates.ping). The
 request (in this case, the title and URL of your site) is placed into an array for transportation, and
 compiled using the request() function.
-Lastly, the full request is sent.  If the <dfn>send_request()</dfn> method returns false we will display the error message
+Lastly, the full request is sent. If the <dfn>send_request()</dfn> method returns false we will display the error message
 sent back from the XML-RPC Server.</p>
 
 <h2>Anatomy of a Request</h2>
 
-<p>An XML-RPC <dfn>request</dfn> is simply the data you are sending to the XML-RPC server.  Each piece of data in a request
-is referred to as a <dfn>request parameter</dfn>.  The above example has two parameters:
+<p>An XML-RPC <dfn>request</dfn> is simply the data you are sending to the XML-RPC server. Each piece of data in a request
+is referred to as a <dfn>request parameter</dfn>. The above example has two parameters:
 The URL and title of your site. When the XML-RPC server receives your request, it will look for parameters it requires.</p>
 
 <p>Request parameters must be placed into an array for transportation, and each parameter can be one
@@ -161,7 +161,7 @@
 <br />
 $this->xmlrpc->request($request);</code>
 
-The  <a href="#datatypes">Data Types</a>  section below has a full list of data types.
+The <a href="#datatypes">Data Types</a> section below has a full list of data types.
 
 
 
@@ -198,7 +198,7 @@
 If the request is for the <var>update_post</var> method, your
 server will load the <dfn>My_blog</dfn> class and call the <dfn>update_entry</dfn> function.</p>
 
-<p>The function names in the above example are arbitrary.  You'll decide what they should be called on your server,
+<p>The function names in the above example are arbitrary. You'll decide what they should be called on your server,
 or if you are using standardized APIs, like the Blogger or MetaWeblog API, you'll use their function names.</p>
 
 <p>There are two additional configuration keys you may make use of when initializing the server class: <var>debug</var> can be set to TRUE in order to enable debugging, and <var>xss_clean</var> may be set to FALSE to prevent sending data through the Security library's xss_clean function.
@@ -221,12 +221,12 @@
 </code>
 
 <p>The <var>$request</var> variable is an object compiled by the Server, which contains the data sent by the XML-RPC Client.
-Using this object you will have access to the <em>request parameters</em> enabling you to process the request.  When
+Using this object you will have access to the <em>request parameters</em> enabling you to process the request. When
 you are done you will send a <dfn>Response</dfn> back to the Client.</p>
 
-<p>Below is a real-world example, using the Blogger API.  One of the methods in the Blogger API is <dfn>getUserInfo()</dfn>.
+<p>Below is a real-world example, using the Blogger API. One of the methods in the Blogger API is <dfn>getUserInfo()</dfn>.
 Using this method, an XML-RPC Client can send the Server a username and password, in return the Server sends
-back information about that particular user (nickname, user ID, email address, etc.).  Here is how the processing
+back information about that particular user (nickname, user ID, email address, etc.). Here is how the processing
 function might look:</p>
 
 
@@ -272,14 +272,14 @@
 
 <h2>Formatting a Response</h2>
 
-<p>Similar to <em>Requests</em>, <em>Responses</em> must be formatted as an array.  However, unlike requests, a response is an array
-<strong>that contains a single item</strong>.  This item can be an array with several additional arrays, but there
-can be only one primary array index.  In other words, the basic prototype is this:</p>
+<p>Similar to <em>Requests</em>, <em>Responses</em> must be formatted as an array. However, unlike requests, a response is an array
+<strong>that contains a single item</strong>. This item can be an array with several additional arrays, but there
+can be only one primary array index. In other words, the basic prototype is this:</p>
 
-<code>$response = array('Response data',  'array');</code>
+<code>$response = array('Response data', 'array');</code>
 
 <p>Responses, however, usually contain multiple pieces of information. In order to accomplish this we must put the response into its own
-array so that the primary array continues to contain a single piece of data.  Here's an example showing how this might be accomplished:</p>
+array so that the primary array continues to contain a single piece of data. Here's an example showing how this might be accomplished:</p>
 
 <code>
 $response = array (<br />
@@ -293,9 +293,9 @@
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
 </code>
 
-<p class="important">Notice that the above array is formatted as a <dfn>struct</dfn>.  This is the most common data type for responses.</p>
+<p class="important">Notice that the above array is formatted as a <dfn>struct</dfn>. This is the most common data type for responses.</p>
 
-<p>As with Requests, a response can be one of the seven data types listed in the  <a href="#datatypes">Data Types</a>  section.</p>
+<p>As with Requests, a response can be one of the seven data types listed in the <a href="#datatypes">Data Types</a> section.</p>
 
 
 <h2>Sending an Error Response</h2>
@@ -314,7 +314,7 @@
 <h2>Creating Your Own Client and Server</h2>
 
 <p>To help you understand everything we've covered thus far, let's create a couple controllers that act as
-XML-RPC Client and Server.  You'll use the Client to send a request to the Server and receive a response.</p>
+XML-RPC Client and Server. You'll use the Client to send a request to the Server and receive a response.</p>
 
 <h3>The Client</h3>
 
@@ -352,7 +352,7 @@
 }
 ?></textarea>
 
-<p>Note: In the above code we are using a "url helper".  You can find more information in the <a href="../general/helpers.html">Helpers Functions</a> page.</p>
+<p>Note: In the above code we are using a "url helper". You can find more information in the <a href="../general/helpers.html">Helpers Functions</a> page.</p>
 
 <h3>The Server</h3>
 
@@ -381,7 +381,7 @@
 
 		$response = array(
 							array(
-									'you_said'  => $parameters['0'],
+									'you_said' => $parameters['0'],
 									'i_respond' => 'Not bad at all.'),
 							'struct');
 
@@ -452,7 +452,7 @@
 $this->xmlrpc->request($request);</code>
 
 <h2>$this->xmlrpc->send_request()</h2>
-<p>The request sending function.  Returns boolean TRUE or FALSE based on success for failure, enabling it to be used conditionally.</p>
+<p>The request sending function. Returns boolean TRUE or FALSE based on success for failure, enabling it to be used conditionally.</p>
 
 <h2>$this->xmlrpc->set_debug(TRUE);</h2>
 <p>Enables debugging, which will display a variety of information and error data helpful during development.</p>
@@ -463,7 +463,7 @@
 <code>echo $this->xmlrpc->display_error();</code>
 
 <h2>$this->xmlrpc->display_response()</h2>
-<p>Returns the response from the remote server once request is received.  The response will typically be an associative array.</p>
+<p>Returns the response from the remote server once request is received. The response will typically be an associative array.</p>
 <code>$this->xmlrpc->display_response();</code>
 
 <h2>$this->xmlrpc->send_error_message()</h2>
diff --git a/user_guide/libraries/zip.html b/user_guide/libraries/zip.html
index 0311266..2fc5fd8 100644
--- a/user_guide/libraries/zip.html
+++ b/user_guide/libraries/zip.html
@@ -81,7 +81,7 @@
 // Write the zip file to a folder on your server. Name it "my_backup.zip"<br />
 $this->zip->archive('/path/to/directory/my_backup.zip');
 <br /><br />
- // Download the file to your desktop.  Name it "my_backup.zip"<br />
+ // Download the file to your desktop. Name it "my_backup.zip"<br />
 $this->zip->download('my_backup.zip');
 </code>
 
@@ -100,7 +100,7 @@
 </code>
 
 <p>You are allowed multiple calls to this function in order to
-add several files to your archive.  Example:</p>
+add several files to your archive. Example:</p>
 
 <code>
 $name = 'mydata1.txt';<br />
@@ -139,8 +139,8 @@
 
 <h2>$this->zip->add_dir()</h2>
 
-<p>Permits you to add a directory.  Usually this function is unnecessary since you can place your data into folders when
-using <dfn>$this->zip->add_data()</dfn>, but if you would like to create an empty folder you can do so.  Example:</p>
+<p>Permits you to add a directory. Usually this function is unnecessary since you can place your data into folders when
+using <dfn>$this->zip->add_data()</dfn>, but if you would like to create an empty folder you can do so. Example:</p>
 
 <code>$this->zip->add_dir('myfolder'); // Creates a folder called "myfolder"</code>
 
@@ -148,49 +148,49 @@
 
 <h2>$this->zip->read_file()</h2>
 
-<p>Permits you to compress a file that already exists somewhere on your server.  Supply a file path and the zip class will
+<p>Permits you to compress a file that already exists somewhere on your server. Supply a file path and the zip class will
 read it and add it to the archive:</p>
 
 <code>
 $path = '/path/to/photo.jpg';<br /><br />
 $this->zip->read_file($path);
 <br /><br />
- // Download the file to your desktop.  Name it "my_backup.zip"<br />
+ // Download the file to your desktop. Name it "my_backup.zip"<br />
 $this->zip->download('my_backup.zip');
 </code>
 
 <p>If you would like the Zip archive to maintain the directory structure of the file in it, pass <kbd>TRUE</kbd> (boolean) in the
-second parameter.  Example:</p>
+second parameter. Example:</p>
 
 
 <code>
 $path = '/path/to/photo.jpg';<br /><br />
 $this->zip->read_file($path, <kbd>TRUE</kbd>);
 <br /><br />
- // Download the file to your desktop.  Name it "my_backup.zip"<br />
+ // Download the file to your desktop. Name it "my_backup.zip"<br />
 $this->zip->download('my_backup.zip');
 </code>
 
-<p>In the above example, <dfn>photo.jpg</dfn> will be placed inside two folders:  <kbd>path/to/</kbd></p>
+<p>In the above example, <dfn>photo.jpg</dfn> will be placed inside two folders: <kbd>path/to/</kbd></p>
 
 
 
 <h2>$this->zip->read_dir()</h2>
 
-<p>Permits you to compress a folder (and its contents) that already exists somewhere on your server.  Supply a file path to the
-directory and the zip class will recursively read it and recreate it as a Zip archive.  All files contained within the
-supplied path will be encoded, as will any sub-folders contained within it.  Example:</p>
+<p>Permits you to compress a folder (and its contents) that already exists somewhere on your server. Supply a file path to the
+directory and the zip class will recursively read it and recreate it as a Zip archive. All files contained within the
+supplied path will be encoded, as will any sub-folders contained within it. Example:</p>
 
 <code>
 $path = '/path/to/your/directory/';<br /><br />
 $this->zip->read_dir($path);
 <br /><br />
- // Download the file to your desktop.  Name it "my_backup.zip"<br />
+ // Download the file to your desktop. Name it "my_backup.zip"<br />
 $this->zip->download('my_backup.zip');
 </code>
 
 <p>By default the Zip archive will place all directories listed in the first parameter inside the zip. If you want the tree preceding the target folder to be ignored
-you can pass <kbd>FALSE</kbd> (boolean) in the second parameter.  Example:</p>
+you can pass <kbd>FALSE</kbd> (boolean) in the second parameter. Example:</p>
 
 <code>
 $path = '/path/to/your/directory/';<br /><br />
@@ -204,7 +204,7 @@
 
 <h2>$this->zip->archive()</h2>
 
-<p>Writes the Zip-encoded file to a directory on your server.  Submit a valid server path ending in the file name.  Make sure the
+<p>Writes the Zip-encoded file to a directory on your server. Submit a valid server path ending in the file name. Make sure the
 directory is writable (666 or 777 is usually OK). Example:</p>
 
 <code>$this->zip->archive('/path/to/folder/myarchive.zip'); // Creates a file named myarchive.zip</code>
@@ -223,7 +223,7 @@
 
 <h2>$this->zip->get_zip()</h2>
 
-<p>Returns the Zip-compressed file data.  Generally you will not need this function unless you want to do something unique with the data.
+<p>Returns the Zip-compressed file data. Generally you will not need this function unless you want to do something unique with the data.
 Example:</p>
 
 <code>
diff --git a/user_guide/license.html b/user_guide/license.html
index 8f53851..ecc5b50 100644
--- a/user_guide/license.html
+++ b/user_guide/license.html
@@ -63,7 +63,7 @@
 <p>Copyright (c) 2008 - 2011, EllisLab, Inc.<br />
 All rights reserved.</p>
 
-<p>This license is a legal agreement between you and EllisLab Inc. for the use of CodeIgniter Software (the "Software").  By obtaining the Software you agree to comply with the terms and conditions of this license.</p>
+<p>This license is a legal agreement between you and EllisLab Inc. for the use of CodeIgniter Software (the "Software"). By obtaining the Software you agree to comply with the terms and conditions of this license.</p>
 
 <h2>Permitted Use</h2>
 <p>You are permitted to use, copy, modify, and distribute the Software and its documentation, with or without modification, for any purpose, provided that the following conditions are met:</p>
diff --git a/user_guide/nav/hacks.txt b/user_guide/nav/hacks.txt
index 8c17f00..183481b 100644
--- a/user_guide/nav/hacks.txt
+++ b/user_guide/nav/hacks.txt
@@ -1,6 +1,6 @@
 I did the following hack in moo.fx.js:
 
-At line 79 in the toggle: function()  function, I added:
+At line 79 in the toggle: function() function, I added:
 
 document.getElementById('nav').style.display = 'block';
 
diff --git a/user_guide/nav/moo.fx.js b/user_guide/nav/moo.fx.js
index 256371d..b21ee20 100755
--- a/user_guide/nav/moo.fx.js
+++ b/user_guide/nav/moo.fx.js
@@ -25,8 +25,8 @@
 	},
 
 	step: function() {
-		var time  = (new Date).getTime();
-		var Tpos   = (time - this.startTime) / (this.duration);
+		var time = (new Date).getTime();
+		var Tpos  = (time - this.startTime) / (this.duration);
 		if (time >= this.duration+this.startTime) {
 			this.now = this.to;
 			clearInterval (this.timer);
diff --git a/user_guide/nav/prototype.lite.js b/user_guide/nav/prototype.lite.js
index e6c3622..857faae 100755
--- a/user_guide/nav/prototype.lite.js
+++ b/user_guide/nav/prototype.lite.js
@@ -1,9 +1,9 @@
-/*  Prototype JavaScript framework
- *  (c) 2005 Sam Stephenson <sam@conio.net>
+/* Prototype JavaScript framework
+ * (c) 2005 Sam Stephenson <sam@conio.net>
  *
- *  Prototype is freely distributable under the terms of an MIT-style license.
+ * Prototype is freely distributable under the terms of an MIT-style license.
  *
- *  For details, see the Prototype web site: http://prototype.conio.net/
+ * For details, see the Prototype web site: http://prototype.conio.net/
  *
 /*--------------------------------------------------------------------------*/
 
@@ -11,117 +11,117 @@
 //note: this is a stripped down version of prototype, to be used with moo.fx by mad4milk (http://moofx.mad4milk.net).
 
 var Class = {
-  create: function() {
+ create: function() {
 	return function() {
-	  this.initialize.apply(this, arguments);
+	 this.initialize.apply(this, arguments);
 	}
-  }
+ }
 }
 
 Object.extend = function(destination, source) {
-  for (property in source) {
+ for (property in source) {
 	destination[property] = source[property];
-  }
-  return destination;
+ }
+ return destination;
 }
 
 Function.prototype.bind = function(object) {
-  var __method = this;
-  return function() {
+ var __method = this;
+ return function() {
 	return __method.apply(object, arguments);
-  }
+ }
 }
 
 function $() {
-  var elements = new Array();
+ var elements = new Array();
 
-  for (var i = 0; i < arguments.length; i++) {
+ for (var i = 0; i < arguments.length; i++) {
 	var element = arguments[i];
 	if (typeof element == 'string')
-	  element = document.getElementById(element);
+	 element = document.getElementById(element);
 
 	if (arguments.length == 1)
-	  return element;
+	 return element;
 
 	elements.push(element);
-  }
+ }
 
-  return elements;
+ return elements;
 }
 
 //-------------------------
 
 document.getElementsByClassName = function(className) {
-  var children = document.getElementsByTagName('*') || document.all;
-  var elements = new Array();
+ var children = document.getElementsByTagName('*') || document.all;
+ var elements = new Array();
 
-  for (var i = 0; i < children.length; i++) {
+ for (var i = 0; i < children.length; i++) {
 	var child = children[i];
 	var classNames = child.className.split(' ');
 	for (var j = 0; j < classNames.length; j++) {
-	  if (classNames[j] == className) {
+	 if (classNames[j] == className) {
 		elements.push(child);
 		break;
-	  }
+	 }
 	}
-  }
+ }
 
-  return elements;
+ return elements;
 }
 
 //-------------------------
 
 if (!window.Element) {
-  var Element = new Object();
+ var Element = new Object();
 }
 
 Object.extend(Element, {
-  remove: function(element) {
+ remove: function(element) {
 	element = $(element);
 	element.parentNode.removeChild(element);
-  },
+ },
 
-  hasClassName: function(element, className) {
+ hasClassName: function(element, className) {
 	element = $(element);
 	if (!element)
-	  return;
+	 return;
 	var a = element.className.split(' ');
 	for (var i = 0; i < a.length; i++) {
-	  if (a[i] == className)
+	 if (a[i] == className)
 		return true;
 	}
 	return false;
-  },
+ },
 
-  addClassName: function(element, className) {
+ addClassName: function(element, className) {
 	element = $(element);
 	Element.removeClassName(element, className);
 	element.className += ' ' + className;
-  },
+ },
 
-  removeClassName: function(element, className) {
+ removeClassName: function(element, className) {
 	element = $(element);
 	if (!element)
-	  return;
+	 return;
 	var newClassName = '';
 	var a = element.className.split(' ');
 	for (var i = 0; i < a.length; i++) {
-	  if (a[i] != className) {
+	 if (a[i] != className) {
 		if (i > 0)
-		  newClassName += ' ';
+		 newClassName += ' ';
 		newClassName += a[i];
-	  }
+	 }
 	}
 	element.className = newClassName;
-  },
+ },
 
-  // removes whitespace-only text node children
-  cleanWhitespace: function(element) {
+ // removes whitespace-only text node children
+ cleanWhitespace: function(element) {
 	element = $(element);
 	for (var i = 0; i < element.childNodes.length; i++) {
-	  var node = element.childNodes[i];
-	  if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+	 var node = element.childNodes[i];
+	 if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
 		Element.remove(node);
 	}
-  }
+ }
 });
\ No newline at end of file
diff --git a/user_guide/overview/appflow.html b/user_guide/overview/appflow.html
index bcbc43f..3b1c42e 100644
--- a/user_guide/overview/appflow.html
+++ b/user_guide/overview/appflow.html
@@ -67,7 +67,7 @@
 <li>The index.php serves as the front controller, initializing the base resources needed to run CodeIgniter.</li>
 <li>The Router examines the HTTP request to determine what should be done with it.</li>
 <li>If a cache file exists, it is sent directly to the browser, bypassing the normal system execution.</li>
-<li>Security.  Before the application controller is loaded, the HTTP request and any user submitted data is filtered for security.</li>
+<li>Security. Before the application controller is loaded, the HTTP request and any user submitted data is filtered for security.</li>
 <li>The Controller loads the model, core libraries, helpers, and any other resources needed to process the specific request.</li>
 <li>The finalized View is rendered then sent to the web browser to be seen. If caching is enabled, the view is cached first so
 that on subsequent requests it can be served.</li>
diff --git a/user_guide/overview/at_a_glance.html b/user_guide/overview/at_a_glance.html
index b6b81d7..1175e7f 100644
--- a/user_guide/overview/at_a_glance.html
+++ b/user_guide/overview/at_a_glance.html
@@ -60,7 +60,7 @@
 
 <h2>CodeIgniter is an Application Framework</h2>
 
-<p>CodeIgniter is a toolkit for people who build web applications using PHP.  Its goal is to enable you to develop projects much faster than you could if you were writing code
+<p>CodeIgniter is a toolkit for people who build web applications using PHP. Its goal is to enable you to develop projects much faster than you could if you were writing code
 from scratch, by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and
 logical structure to access these libraries. CodeIgniter lets you creatively focus on your project by
 minimizing the amount of code needed for a given task.</p>
@@ -70,7 +70,7 @@
 For more information please read the <a href="../license.html">license agreement</a>.</p>
 
 <h2>CodeIgniter is Light Weight</h2>
-<p>Truly light weight.  The core system requires only a few very small libraries. This is in stark contrast to many frameworks that require significantly more resources.
+<p>Truly light weight. The core system requires only a few very small libraries. This is in stark contrast to many frameworks that require significantly more resources.
 Additional libraries are loaded dynamically upon request, based on your needs for a given process, so the base system
 is very lean and quite fast.
 </p>
@@ -84,7 +84,7 @@
 This is particularly good for projects in which designers are working with your template files, as the code these file contain will be minimized. We describe MVC in more detail on its own page.</p>
 
 <h2>CodeIgniter Generates Clean URLs</h2>
-<p>The URLs generated by CodeIgniter are clean and search-engine friendly.  Rather than using the standard "query string"
+<p>The URLs generated by CodeIgniter are clean and search-engine friendly. Rather than using the standard "query string"
 approach to URLs that is synonymous with dynamic systems, CodeIgniter uses a segment-based approach:</p>
 
 <code>example.com/<var>news</var>/<dfn>article</dfn>/<samp>345</samp></code>
@@ -92,7 +92,7 @@
 <p>Note: By default the index.php file is included in the URL but it can be removed using a simple .htaccess file.</p>
 
 <h2>CodeIgniter Packs a Punch</h2>
-<p>CodeIgniter comes with  full-range of libraries that enable the most commonly needed web development tasks,
+<p>CodeIgniter comes with full-range of libraries that enable the most commonly needed web development tasks,
 like accessing a database, sending email, validating form data, maintaining sessions, manipulating images, working with XML-RPC data and
 much more.</p>
 
@@ -104,7 +104,7 @@
 <p>Although CodeIgniter <em>does</em> come with a simple template parser that can be optionally used, it does not force you to use one.
 
 Template engines simply can not match the performance of native PHP, and the syntax that must be learned to use a template
-engine is usually only marginally easier than learning the basics of PHP.  Consider this block of PHP code:</p>
+engine is usually only marginally easier than learning the basics of PHP. Consider this block of PHP code:</p>
 
 <code>&lt;ul><br />
 <br />
@@ -133,7 +133,7 @@
 
 
 <h2>CodeIgniter is Thoroughly Documented</h2>
-<p>Programmers love to code and hate to write documentation.  We're no different, of course, but
+<p>Programmers love to code and hate to write documentation. We're no different, of course, but
 since documentation is <strong>as important</strong> as the code itself,
 we are committed to doing it. Our source code is extremely clean and well commented as well.</p>
 
diff --git a/user_guide/overview/features.html b/user_guide/overview/features.html
index e20219e..4209463 100644
--- a/user_guide/overview/features.html
+++ b/user_guide/overview/features.html
@@ -59,10 +59,10 @@
 <h1>CodeIgniter Features</h1>
 
 <p>Features in and of themselves are a very poor way to judge an application since they tell you nothing
-about the user experience, or how intuitively or intelligently it is designed.  Features
+about the user experience, or how intuitively or intelligently it is designed. Features
 don't reveal anything about the quality of the code, or the performance, or the attention to detail, or security practices.
 The only way to really judge an app is to try it and get to know the code. <a href="../installation/">Installing</a>
-CodeIgniter is child's play so we encourage you to do just that.  In the mean time here's a list of CodeIgniter's main features.</p>
+CodeIgniter is child's play so we encourage you to do just that. In the mean time here's a list of CodeIgniter's main features.</p>
 
 <ul>
 <li>Model-View-Controller Based System</li>
@@ -73,7 +73,7 @@
 <li>Security and XSS Filtering</li>
 <li>Session Management</li>
 <li>Email Sending Class. Supports Attachments, HTML/Text email, multiple protocols (sendmail, SMTP, and Mail) and more.</li>
-<li>Image Manipulation Library (cropping, resizing, rotating, etc.).  Supports GD, ImageMagick, and NetPBM</li>
+<li>Image Manipulation Library (cropping, resizing, rotating, etc.). Supports GD, ImageMagick, and NetPBM</li>
 <li>File Uploading Class</li>
 <li>FTP Class</li>
 <li>Localization</li>
diff --git a/user_guide/overview/getting_started.html b/user_guide/overview/getting_started.html
index f120913..1683326 100644
--- a/user_guide/overview/getting_started.html
+++ b/user_guide/overview/getting_started.html
@@ -57,7 +57,7 @@
 
 <h1>Getting Started With CodeIgniter</h1>
 
-<p>Any software application requires some effort to learn.  We've done our best to minimize the learning
+<p>Any software application requires some effort to learn. We've done our best to minimize the learning
 curve while making the process as enjoyable as possible.
 </p>
 
diff --git a/user_guide/overview/goals.html b/user_guide/overview/goals.html
index 754ecaa..7f1f767 100644
--- a/user_guide/overview/goals.html
+++ b/user_guide/overview/goals.html
@@ -67,9 +67,9 @@
 <p>From a technical and architectural standpoint, CodeIgniter was created with the following objectives:</p>
 
 <ul>
-<li><strong>Dynamic Instantiation.</strong>  In CodeIgniter, components are loaded and routines executed only when requested, rather than globally.  No assumptions are made by the system regarding what may be needed beyond the minimal core resources, so the system is very light-weight by default.  The events, as triggered by the HTTP request, and the controllers and views you design will determine what is invoked.</li>
-<li><strong>Loose Coupling.</strong>  Coupling is the degree to which components of a system rely on each other.  The less components depend on each other the more reusable and flexible the system becomes. Our goal was a very loosely coupled system.</li>
-<li><strong>Component Singularity.</strong>  Singularity is the degree to which components have a narrowly focused purpose.  In CodeIgniter, each class and its functions are highly autonomous in order to allow maximum usefulness.</li>
+<li><strong>Dynamic Instantiation.</strong> In CodeIgniter, components are loaded and routines executed only when requested, rather than globally. No assumptions are made by the system regarding what may be needed beyond the minimal core resources, so the system is very light-weight by default. The events, as triggered by the HTTP request, and the controllers and views you design will determine what is invoked.</li>
+<li><strong>Loose Coupling.</strong> Coupling is the degree to which components of a system rely on each other. The less components depend on each other the more reusable and flexible the system becomes. Our goal was a very loosely coupled system.</li>
+<li><strong>Component Singularity.</strong> Singularity is the degree to which components have a narrowly focused purpose. In CodeIgniter, each class and its functions are highly autonomous in order to allow maximum usefulness.</li>
 </ul>
 
 <p>CodeIgniter is a dynamically instantiated, loosely coupled system with high component singularity. It strives for simplicity, flexibility, and high performance in a small footprint package.</p>
diff --git a/user_guide/overview/mvc.html b/user_guide/overview/mvc.html
index 91cf649..9eb327a 100644
--- a/user_guide/overview/mvc.html
+++ b/user_guide/overview/mvc.html
@@ -60,12 +60,12 @@
 
 <p>CodeIgniter is based on the Model-View-Controller development pattern.
 
-MVC is a software approach that separates application logic from presentation.  In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting.</p>
+MVC is a software approach that separates application logic from presentation. In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting.</p>
 
 <ul>
 <li>The <strong>Model</strong> represents your data structures. Typically your model classes will contain functions that help you
-retrieve, insert, and update information in your  database.</li>
-<li>The <strong>View</strong> is the information that is being presented to a user.  A View will normally be a web page, but
+retrieve, insert, and update information in your database.</li>
+<li>The <strong>View</strong> is the information that is being presented to a user. A View will normally be a web page, but
 in CodeIgniter, a view can also be a page fragment like a header or footer. It can also be an RSS page, or any other type of "page".</li>
 <li>The <strong>Controller</strong> serves as an <em>intermediary</em> between the Model, the View,
 and any other resources needed to process the HTTP request and generate a web page.</li>
diff --git a/user_guide/userguide.css b/user_guide/userguide.css
index f93ff0d..b08f4fb 100644
--- a/user_guide/userguide.css
+++ b/user_guide/userguide.css
@@ -391,7 +391,7 @@
 
 .select {
  background-color: #fff;
- font-size:  11px;
+ font-size: 11px;
  font-weight: normal;
  color: #333;
  padding: 0;
